C++中一个类不允许继承如何作?

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:44:59
C++中一个类不允许继承如何作?

没有见过不可以继承,2楼说的也不明白?

C++中没有类似final的关键字,因此无法直接实现禁止类继承。但下面的代码将会禁止继承:
class A;
class Lock {
friend class A;
private:
Lock() {}
};
class A : virtual public Lock {
// ...
public:
A()
{}
A(int t)
{}
};
现在,如果你尝试从类A派生其它类将会得到类似下面这样的编译错误。
class B : public A
{}; // Lock::Lock' : cannot access private member declared in class 'Lock'
这是因为派生类都需要调用虚基类的构造函数,因此从A派生的B需要调用虚基类的构造函数(也就是Lock
的构造函数),而Lock的构造函数是私有的,类B又不是Lock的友元,所以这将会产生一个编译错误。
如果我们移除类A派生时的virtual关键字,程序将会成功编译。这是因为在非虚拟继承中,任何类都可以
调用直接父类中的构造函数。因此,在非虚拟继承中,B将调用它的直接父类A的构造函数而A将调用它的直接父
类Lock的构造函数,这都是合法的。

把构造private了就可以,哪本书上讲过

不大明白 嘎嘎 偶比较烂