C++规范说明默认析构函数会删除所有非静态成员。然而,我无法实现这一点。
下面是我的代码:
class N {
public:
~N() {
std::cout << "Destroying object of type N";
}
};
class M {
public:
M() {
n = new N;
}
// ~M() { //this should happen by default
// delete n;
// }
private:
N* n;
};
接下来这段代码本应该打印指定的消息,但实际上并没有:
M* m = new M();
delete m; //this should invoke the default destructor
n
是一个指针。该指针会被默认析构函数销毁。它所指向的内容不会被销毁,这是你的责任。 - nos