我应该如何摆脱 C++ 中对象切片的问题。
在我的应用程序中,如果派生对象class
有一些动态分配的指针并且派生class
对象被分配给基class
对象,则行为是内存损坏!
我应该如何摆脱 C++ 中对象切片的问题。
在我的应用程序中,如果派生对象class
有一些动态分配的指针并且派生class
对象被分配给基class
对象,则行为是内存损坏!
这取决于您的设计。您可能必须更改某些设计标准才能摆脱它。一种选择是在您的基础中为特定的派生提供重载operator =
和复制构造函数。class
class
class Derived;
class Base
{
//...
private:
Base (const Derived&);
Base& operator = (const Derived&); // private and unimplemented
};
现在,如果您尝试执行以下操作:
Derived d;
Base b;
b = d; // compiler error
这将导致编译器错误。
你不能。你应该用指针解决问题。如果要将 Obj2 分配给 Obj1,请覆盖分配运算符 (operator=)