我目前正在学习C ++,而且我在创建析构函数时遇到了一些麻烦。
以下是我与
争吵的主要部分的代码#include <list>
using namespace std;
class Test
{
private:
list<char> *tempList;
public:
Test()
{
tempList->push_back('a');
tempList->push_back('b');
tempList->push_back('c');
}
~Test()
{
while (tempList->size() != 0)
{
tempList->pop_back();
}
}
};
正如您所看到的,我使用std :: list来实现双向链表。目前我正在摆弄它,因此为什么变量被命名为tempList,为什么我要把a,b,c放在那里。
我需要一些帮助来创建析构函数。我已经开始创建自己的,但后来我开始谷歌搜索其他解决方案,没有一个看起来像我的。
我希望析构函数做的主要事情是清理tempList,这是一个双向链接的char列表。我认为需要做的是我需要找出一种方法来删除链表中的每个元素。
答案 0 :(得分:2)
假设tempList
已正确分配和解除分配(现在不是),您不必调用任何内容 - 列表中的元素将自动销毁。
最简单,最干净的解决方案是根本没有指针:
class Test
{
private:
list<char> tempList;
public:
Test()
{
tempList.push_back('a');
tempList.push_back('b');
tempList.push_back('c');
}
};
答案 1 :(得分:1)
标准类std::list
有自己的析构函数。当调用类Test的析构函数时,它依次调用std :: list的析构函数。无需使用pop_back
来删除列表中的元素。它是析构函数中的超级操作。 std::list
构造函数分配的内存将与放置在那里的字符一起删除。