C++类成员函数声明中&运算符的放置位置问题
播放列表清空函数的正确实现
你对成员函数访问head的理解有误——类成员函数内部直接使用head时,操作的就是类的成员变量本身,不是本地副本(只有当你把head赋值给局部变量p时,p才是副本)。
但你的destroy函数确实存在问题:释放所有节点后,没有将成员变量head置为nullptr,这会导致head变成野指针,后续对播放列表的操作(比如初始化、插入)可能引发未定义行为。
修正后的destroy函数实现如下:
void playlist::destroy() { elem* p = head, *q; while(p != nullptr) { q = p; p = p->next; delete q; } // 清空后必须将head置空,避免野指针 head = nullptr; }
补充说明:
- 成员函数无需通过
&来访问成员变量,因为函数本身就属于类的实例,能直接访问类的成员(包括私有成员head)。 - 释放节点后重置
head是链表操作的标准步骤,确保链表状态正确。
内容的提问来源于stack exchange,提问作者GCODE
相关产品推荐
相关产品推荐

