如何克服c++中对象切片的问题
how to over come the issue of object slicing in c++
如何解决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=)
相关文章:
- 避免矢量中的对象切片<Base><shared_ptr>
- 专门化模板覆盖函数/避免对象切片
- C++ 被此代码与多态性、指针和对象切片混淆
- 我们能胜过对象切片吗?
- 如何在考虑对象切片的同时通过传入单个 Base 对象来打印出数组中的对象?
- 成员变量和对象切片
- 如何在不引入未来对象切片的情况下实现 ICloneable
- 避免对象切片
- 故意对对象切片是一种可行的技术吗?
- 对象切片:通过按值派生为 Base - 安全还是危险?
- C++ CRTP 派生类对象切片
- C++ - 即使在使用指针后也能进行对象切片
- 了解对象切片
- 使用对象切片可靠地从多个基类之一中复制
- 对象切片和隐式类型转换
- 一种克服对象切片的方法
- 按引用传递可避免对象切片
- 使用CRTP时的对象切片
- 对象切片:从基类对象访问分层的类方法
- 这会导致对象切片吗?