数组继承中的C ++对象

时间:2016-06-21 11:01:57

标签: c++ inheritance

我有两个类(TypeA和TypeB),其中TypeB扩展了TypeA。

如果我像这样创建一个对象:

ATypeA* NewObject = SpawnObject<ATypeB>();

Spawn对象方法只是创建一个新的ATypeB对象

然后将它存储在TypeA数组中,是TypeA或TypeB数组中的对象吗?

1 个答案:

答案 0 :(得分:2)

这取决于您的数组以及如何分配对象。

如果数组声明为TypeA myArray[10];并且您使用myArray[0] = *NewObject;分配对象,那么数组中的对象将是*NewObject的{​​em>切片副本输入TypeA

如果数组声明为TypeA* myArray[10];(可能是您的意图)并且您使用myArray[0] = NewObject;分配对象,则数组将包含指向同一对象的指针 NewObject,当然是TypeB类型。

那就是说,您应该考虑使用std::vector<std::unique_ptr<TypeA>>而不是原始数组。它将使您的代码更简单,更安全。