来自链接 http://www.coolinterview.com/interview/10842/
有没有什么方法可以编写一个类,使得任何类都不能从它继承?
根据上面链接中的建议,我尝试了以下代码
class A
{
A(){}
~A(){}
A(const A&);
A& operator=(const A&);
};
class B: public A
{
};
上面的代码没有产生任何错误。 如果我尝试像下面这样实例化 B
int main()
{
B ob;
}
然后报错
error C2248: 'A::A' : cannot access private member declared in class 'A'
因此允许继承但不允许实例化。
有没有其他方法可以阻止继承本身?
最佳答案
Java 中的 final
关键字或 C++ 中的 C♯ 的 sealed
没有等价物。您当然可以通过将类构造函数设为私有(private)来防止继承,或者通过跟随 liaK 的链接并让一个类子类化一个具有私有(private)构造函数并且是它的 friend 的类。
一般而言:
您可以将析构函数设置为非虚拟的,以表示您不打算让该类成为多态的,并记录这是您的意图。当然,如果你类(class)的用户决定忽略这一点,他们可能会因为他们的狂妄自大而遇到他们自己的问题。 ;)
另外:http://www.parashift.com/c++-faq-lite/strange-inheritance.html#faq-23.11
关于c++ - 有什么方法可以编写一个类,使得不能从它继承任何类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3939111/