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 而不是直接继承呢?

这里写图片描述

以上转自:https://blog.csdn.net/zhang1308299607/article/details/76100430

若想使用BASE类,通过使用C类实现,若用户想对C继承,则失败,因为D的构造需要调用BASE的构造函数,但是D没有权限调用BASE的构造函数。

猜你喜欢

转载自blog.csdn.net/qq_16334327/article/details/82942468