在C++里写一个不能被继承的类(2)
上一篇博客中讲述了一种在C++中实现Final类的例子,但是后来想想那个办法有点绕,其实只要想办法让孙子类无法调用基类的构造函数就可以了,可以有很简单的办法能做到,不需要使用模板呀、友元呀那些比较复杂的机制。具体的代码如下:
1 2 3 4 5 6 7 8 9 10 |
class AbstractFinal { <span style="color: #ff0000;">protected</span>: AbstractFinal() {} ~AbstractFinal() {} }; class FinalClass: <span style="color: #ff0000;">virtual private</span> AbstractFinal { }; |
只要理解我标红的地方就可以了,把AbstractFinal的构造函数设置成私有的,然后FinalClass以私有虚继承的方式继承AbstractFinal类,这个时候,再有FinalClass的子类就无法调用AbstractFinal的构造函数(对其是私有的),所以也就形成了一个无法被继承的类。
近期评论