我有一個名爲Animal的類,它有一個虛擬的方法,所以類變成了虛擬類。向量中的內存管理C++中的內存管理<T>
class Animal
{
virtual double eat() = 0;
};
我有兩個類,他們是貓和狗,這些類繼承了動物。
,並有第四類-zoo-,它有一個場
vector<Animal *> animals;
我正在推動的貓,狗實例動物園對象的動物載體。
在任何時候我想清除動物園實例,我也希望這個對象的向量被刪除。而且我也希望這個對象的矢量對象被刪除。
我到底應該做什麼。 除動物園以外的所有類都只有浮點字段(無指針)。 (float a,b等) 所以我們可以說,沒有必要處理動物物體,因爲他們沒有任何指針。
我應該在哪裏寫析構函數。在一個基類(動物)或一個亞類(貓狗)或無處可以或我應該如何寫這些析構函數。
讓我補充說'std :: shared_ptr'可能是更好的選擇。然而,'unique_ptr <>'和'shared_ptr <>'都不是完美的。 –
cmaster
@cmaster我會盡管動物園擁有它的動物,所以'shared_ptr'不會是最好的選擇。但我不認爲有足夠的信息。 – juanchopanza
我不想以任何方式批評你,我只是想**在你的回答中加上**,表示可能有更好的選擇。在類似的情況下,有大量的用例需要'shared_ptr'。 – cmaster