c++不能被继承的类

来源:互联网 发布:sql server有什么优势 编辑:程序博客网 时间:2024/05/29 19:17

思路:由于任何派生类的对象在创建的时候,都必然会调用其所有祖先类的构造函数,所以,只要这些构造函数中任何一个无法访问,就可以阻止该派生类对象的构造。

1、将类的构造函数定义为私有的,同时在该类中定义一个公有的的静态成员函数,由这个函数来完成对象的初始化工作。(单件类就是通过这种方式实现的)

 

2、同过在对象创建对象,禁止在栈上创建对象

这样也可以实现一个不能被继承的类,但是会忘记使用delete的危险

 

3、通过使用虚拟继承来实现终结类

这样的FinalClass再被继承的话,首先要调用被虚拟继承的类FinalParent的构造函数,由于FinalParent的类的构造函数在FinalClass中已经变成了私有的,所以FinalClass是不能被继承的了

综上所述,只有第三种才是真正的终结类,前面两个都和正常的使用规范不同。

原创粉丝点击