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