我有一个名为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