使用STL列表容器,需要初始化作为属性的链表

Using STL list container, a linked list as an attribute needed to be initialised?

本文关键字:初始化 属性 链表 列表 STL 使用      更新时间:2023-10-16

我很困惑,当使用STL列表作为类中的属性时,我们是否需要初始化构造函数中的链表,以及如何使用析构函数将内存释放回系统?我知道STL列表有一个自动删除链接列表的描述符。然而,我的导师要求我们在课堂上加入析构函数。因此,我正在考虑如何处理列表属性。

所以我有一个Column类,它包含一个char的链表作为它的属性。到目前为止,我有:

class Column
{
   private:
   list<char> chars;
   list<char>::const_iterator itr;
   public:
   Column()
   {  
   }
   ~Column()
   {
   }
.....
};

那么,我需要初始化构造函数中的链表字符吗?我需要删除析构函数中的链表吗?我知道我们通常在使用new之后再使用delete。或者我可以像这样把构造函数和析构函数的内容留空吗?谢谢你的帮助。

您不需要显式调用std::list成员的构造函数和析构函数。编译器会为您处理这些问题。

所以,是的,你可以让这个类的构造函数和析构函数为空。

在您的情况下,分配和取消分配内存是std::list的责任,因此您不需要在析构函数中执行任何操作。将构造函数和析构函数体留空将正常工作,并且不会出现内存泄漏。