C++数组继承中的对象
C++ objects within an array inheritance
我有两个类(TypeA和TypeB),其中TypeB扩展了TypeA。
如果我创建一个这样的对象:
ATypeA* NewObject = SpawnObject<ATypeB>();
生成对象方法只是创建一个新的 ATypeB 对象
然后将其存储在TypeA的数组中,对象是在TypeA的数组中还是TypeB的数组中?
这取决于您的数组以及您分配对象的方式。
如果数组声明为TypeA myArray[10];
并且您使用myArray[0] = *NewObject;
分配对象,则数组中的对象将是TypeA
类型的*NewObject
的切片副本。
如果数组被声明为TypeA* myArray[10];
(可能是您的意图)并且您使用myArray[0] = NewObject;
分配您的对象,那么数组将包含一个指向NewObject
指向同一对象的指针,当然类型为TypeB
。
也就是说,您可能应该考虑使用std::vector<std::unique_ptr<TypeA>>
而不是原始数组。它将使您的代码更简单、更安全。
相关文章:
- 如何创建从同一类继承的不同对象的向量
- 如何在QT Creator上将QWidget声明为继承类的对象
- 如果'C'公开继承'B',B 私下继承'A',为什么我不能在"C"中创建"A"的对象?
- 私有字段对象与私有继承?
- 为什么我不能在主函数之外定义一个类的对象(它继承了另一个类)?
- C++:返回一个基于范围 for 循环迭代器,其中包含继承对象
- 使用智能指针附加的继承对象的深层复制
- 如何继承返回对当前对象的引用的方法?
- C++具有空派生类对象的继承大小
- 防止在按值传递对象(继承)时进行切片
- 具有多个继承共享一个资源的对象 - 寻找良好的设计模式
- 对象成员变量还是继承
- 继承 - 查找类的对象的大小
- 成员子对象继承存储持续时间是否有任何非直观的副作用
- 访问从 QObject 继承的对象继承的类的Q_Properties
- c++如何返回当前类类型的对象(继承)
- 在对象继承中构造对象后设置稍后的值
- c++ -从其他对象继承std::元组,并为其添加虚函数
- 我有一个基对象和派生类对象的向量,但我无法访问存储在向量中的派生对象继承的数据成员
- 从基础对象继承接口是一种好的做法吗