C++:38---final关键字和禁止类继承
生活随笔
收集整理的这篇文章主要介绍了
C++:38---final关键字和禁止类继承
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
一、final关键字
C++新标准规定:如果我们定义的类不希望被其他类继承,那么可以在类名后加一个final关键字
但是final类仍然可以继承其他类。
实际上C++11的关键字final有两个用途。第一,它阻止了从类继承;第二,阻止一个虚函数的重载。
二、演示案例
class A final{}; class B:public A{}; //报错,A是final的 class A {}; class B final :public A{}; //正确 class C:public B {}; //错误
某些实现系统服务、基础功能和加密等的类通常是不允许有子类的;实现者不想客户端从这些类派生新类而修改他们。标准库容器,如std:: vector和std:: list的无子类化类型就是另一个很好的例子。这些容器没有虚拟析构函数或者确切地说没有任何虚成员函数。
然而,程序员常常在没有意识到风险的情况下坚持从std::vector派生。在C++11中,无子类类型将被声明为如下所示:
class TaskManager {/*..*/} final;class PrioritizedTaskManager: public TaskManager {}; //compilation error: base class TaskManager is final同样,你可以通过
总结
以上是生活随笔为你收集整理的C++:38---final关键字和禁止类继承的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 理解Caffe的网络模型
- 下一篇: mysql导入source数据库sql的