转自https://blog.csdn.net/omg_orange/article/details/82696060
Java中,可将不允许扩展的类被称为final类。
c++中,可以直接把这个类的构造函数设置成私有的,杜绝了其他类的继承,但也相当于毁掉了这个类。
借助友元来实现,因为友元是不可以被继承的。如果一个类的构造函数要借助它的友元类,那么继承了这个类的类就无法构造自己的对象。从而杜绝了被继承。
#include <iostream>
using namespace std;
class C;
class BASE
{
private:
BASE(){}
friend class C; //设class C为class BASE的友元
};
class C: public virtual BASE
{
};
class D:public C
{
};
int main()
{
C c;
//D d; 不可以实例化对象
}
为什么class C要虚拟继承class BASE 而不是直接继承呢?