计算机 选择题 较难

虚析构函数 — 计算机选择题

C++ 程序设计(大学通用) 继承与多态 AI 三重审校通过

题目
在 C++ 中,基类 Sensor 的析构函数未声明为 virtual,派生类 HeatSensor 的析构函数负责关闭其成员句柄并释放堆内存。函数中依次执行:Sensor *s = new HeatSensor; delete s; 之后程序继续运行若干秒后出现资源泄漏。下列关于该现象原因的分析,唯一正确的是哪一项?A. 析构函数未声明为 virtual,通过基类指针 delete 只调用了 Sensor 的析构函数,HeatSensor 的析构函数未被调用,导致其资源未被释放 B. new HeatSensor 时构造函数调用顺序错误导致资源未初始化 C. delete 后指针 s 未置空导致二次释放 D. Sensor 类必须同时把构造函数也声明为 virtual 才能正确释放资源