You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:47:38