-3

我应该如何摆脱 C++ 中对象切片的问题。

在我的应用程序中,如果派生对象class有一些动态分配的指针并且派生class对象被分配给基class对象,则行为是内存损坏!

4

2 回答 2

1

这取决于您的设计。您可能必须更改某些设计标准才能摆脱它。一种选择是在您的基础中为特定的派生提供重载operator =和复制构造函数。classclass

class Derived;
class Base
{
//...
private:
  Base (const Derived&);
  Base& operator = (const Derived&);  // private and unimplemented
};

现在,如果您尝试执行以下操作:

Derived d;
Base b;
b = d; // compiler error

这将导致编译器错误。

于 2011-07-28T12:27:50.390 回答
0

你不能。你应该用指针解决问题。如果要将 Obj2 分配给 Obj1,请覆盖分配运算符 (operator=)

于 2011-07-28T12:25:49.360 回答