【发布时间】:2025-11-28 16:30:01
【问题描述】:
这是一个有效的 LinkedList 析构函数吗?我仍然对他们感到困惑。
我想确保我理解正确。
LinkedList::~LinkedList()
{
ListNode *ptr;
for (ptr = head; head; ptr = head)
{
head = head->next
delete ptr;
}
}
所以在循环开始时,指针 ptr 被设置为保存头的地址,即链表中的第一个节点。然后将 head 设置为下一项,一旦第一次删除发生,它将成为列表的开头。 ptr 被删除,第一个节点也是如此。在循环的第一次迭代中,指针再次设置为 head。
我担心的是到达最后一个节点。条件“头”;应该检查它是否不为空,但我不确定它是否会起作用。
任何帮助表示赞赏。
【问题讨论】:
-
你为什么不尝试通过调试器运行代码,看看它是否有效?
-
@Manuel,因为某些平台上的调试器没有集成,很难使用?
-
我知道我会为此被枪毙(总有人这样做,但我是个信徒)。 head 是一个成员变量,你真的应该有成员变量的命名约定,比如 m_head 或 head_
标签: c++ linked-list destructor