0
我有兩個類(TypeA和TypeB),其中TypeB擴展TypeA。數組繼承內的C++對象
如果我創建像這樣的物體:
ATypeA* NewObject = SpawnObject<ATypeB>();
菌種對象方法只是創建一個新的ATypeB對象
然後將其存儲在類型A的陣列,是內的對象TypeA或TypeB的數組?
我有兩個類(TypeA和TypeB),其中TypeB擴展TypeA。數組繼承內的C++對象
如果我創建像這樣的物體:
ATypeA* NewObject = SpawnObject<ATypeB>();
菌種對象方法只是創建一個新的ATypeB對象
然後將其存儲在類型A的陣列,是內的對象TypeA或TypeB的數組?
它取決於你的數組以及你如何分配對象。
如果數組被聲明爲TypeA myArray[10];
和分配使用myArray[0] = *NewObject;
那麼對象數組中的將是一個切片的TypeA
類型的*NewObject
拷貝你的對象。
如果數組被聲明爲TypeA* myArray[10];
(可能是你的意圖),你使用myArray[0] = NewObject;
則數組將包含一個指針由NewObject
指向同一個對象分配你的對象,TypeB
類型的課程。
也就是說,你應該考慮使用std::vector<std::unique_ptr<TypeA>>
而不是原始數組。它會讓你的代碼更簡單,更安全。
它將來自TypeA – STF
您是否將對象或指針存儲在數組中? –
你只能得到指針和引用的多態性。當你分配一個常規變量時,你只需要獲得該類的切片。 – Barmar