【发布时间】:2011-01-11 09:47:42
【问题描述】:
我的 C++ 有点生疏了,但我制作了一个反转链表的程序,现在我正在尝试为它编写适当的析构函数,但我不知道到底要销毁什么。这是我的类定义:
class LinkedList
{
private:ListElement *start;
public:LinkedList();
public:void AddElement(int val);
public:void PrintList();
public:void InvertList();
};
class ListElement
{
public:int value;
public:ListElement * link;
public:ListElement(int val);
public:ListElement();
};
class Stack
{
private:ListElement ** stack;
private:int index;
public:Stack(int size);
public:void push(ListElement * le);
public:ListElement * pop();
};
堆栈用于我反转列表时。 反正 ... 我将如何为这些编写析构函数? 我在想:
对于 ListElement,将值设为 0,将链接设为 0(NULL)。
对于 LinkedList,遍历元素并为所有元素调用 ListElementDestructor。
我对此不太确定,因为据我所知,析构函数会自动调用成员对象的析构函数,所以在这种情况下,只为 LinkedList 编写一个空的析构函数就足够了吗?我不知道...这就是我问的原因
对于我不知道的堆栈......在列表反转后指针已经为0(NULL),因为它们都被弹出了。
我有点困惑。 任何人都可以帮忙吗? 提前谢谢你。
【问题讨论】:
-
在元素之间交换指针的方向而不是使用堆栈不是更容易吗?
-
不需要重复 private 和 public 关键字。只做私有://私有 var 声明 public://公共 var 声明
-
我还建议将 listElement 的“链接”成员设为私有,并通过 next() 方法提供对其的只读访问权限
标签: c++ linked-list destructor