gpt4 book ai didi

数组继承中的 C++ 对象

转载 作者:行者123 更新时间:2023-11-28 02:04:49 26 4
gpt4 key购买 nike

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

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

ATypeA* NewObject = SpawnObject<ATypeB>();

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

然后存入一个TypeA的数组中,这个对象是在TypeA数组中还是TypeB数组中?

最佳答案

这取决于您的数组以及您分配对象的方式。

如果数组声明为TypeA myArray[10];然后使用 myArray[0] = *NewObject; 分配对象那么数组中的对象将是 *NewObject切片拷贝类型 TypeA .

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

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

关于数组继承中的 C++ 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37942673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com