欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++:38---final关键字和禁止类继承

发布时间:2023/12/13 c/c++ 70 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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关键字和禁止类继承的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。