在我的上篇博客里,我讲到继承中的作用域和派生类的默认成员函数:https://blog.youkuaiyun.com/ly_6699/article/details/88805464,
并留下一个问题:怎样实现一个不能被继承的类!
这道题的解题思路有两个:
1.在C++98 里,我们可以将构造函数私有化,这样派生类无法调用基类的构造函数,便无法继承。
具体代码如下:
class NonInherit
{
public:
//这个函数保证对象在类外可以被访问,但无法被继承
static NonInherit GetInstance()
{
return NonInherit();
}
private:
NonInherit() //对象在类内完成创建
{}
};
2. 在C++11 里,我们可以用关键字final,禁止类被继承
具体代码的实现如下:
class NonInherit final
{};