如何克服c++中对象切片的问题

how to over come the issue of object slicing in c++

本文关键字:对象 切片 问题 c++ 何克服 克服      更新时间:2023-10-16

如何解决c++中对象切片的问题?

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

这取决于你的设计。您可能需要更改某些设计标准来摆脱它。一种选择是在基本class中重载operator =和复制构造函数,用于特定派生的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,则重写assign operator (operator=)