C++类继承体系结构 - 防止强制转换

Igo*_*lin 0 c++ inheritance casting class

我有一个基类结构和几个继承的类.基类应该是纯虚拟类,它应该防止实例化.可以实例化继承的类.代码示例如下:

class BaseClass
{
public:
    BaseClass(void);
    virtual ~BaseClass(void) = 0;
};

class InheritedClass : public BaseClass
{
public:
    InheritedClass1(void);
    ~InheritedClass1(void);
};

class DifferentInheritedClass : public BaseClass
{
public:
    DifferentInheritedClass(void);
    ~DifferentInheritedClass(void);
};
Run Code Online (Sandbox Code Playgroud)

我想阻止以下操作发生:

InheritedClass *inherited1 = new InheritedClass();

DifferentInheritedClass *inherited2 = new DifferentInheritedClass ();

BaseClass *base_1 = inherited1;
BaseClass *base_2 = inherited2;

*base_1 = *base_2;
Run Code Online (Sandbox Code Playgroud)

sha*_*oth 10

使复制构造函数和赋值运算符处于BaseClass受保护状态.该类已经不可创建,因此您不需要公共复制构造函数和赋值运算符.使用受保护的复制构造函数和赋值运算符,您可以从派生类构造函数和赋值运算符中调用它.