gpt4 book ai didi

c++ - 删除容器的正确方法

转载 作者:行者123 更新时间:2023-11-30 04:11:01 25 4
gpt4 key购买 nike

例如,在类中使用容器销毁类时:

class randomClass
{
...
private:
queue<myClass*> *myQueue;
...
};

删除队列的正确原因是什么:

第一个选项:

randomClass::~randomClass()
{
delete myQueue;
}

第二个选项:

randomClass::~randomClass()
{
while(myQueue.size() > 0)
{
myClass *tmp;
tmp = myQueue->front();

delete tmp;
myQueue->pop();
}

delete myQueue;
}

最佳答案

由于您使用的是常规指针(而不是智能指针),因此可以使用第二个选项,因为它可以防止内存泄漏。

一种更 C++ 的编码方式是使用智能指针(即 std::unique_ptrstd::shared_ptr )而不是普通指针。然后第一个选项将正常工作。

最后,您可能希望使 myQueue 成为对象,而不是指针。这将使您无需编写析构函数以及复制构造函数和赋值运算符。

关于c++ - 删除容器的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20367298/

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