如何手动销毁成员变量?

cur*_*rer 4 c++ destructor

我有关于析构函数的基本问题.

假设我有以下课程

class A
{
public:

int z;
int* ptr;

A(){z=5 ; ptr = new int[3]; } ;
~A() {delete[] ptr;};

}
Run Code Online (Sandbox Code Playgroud)

现在析构函数应该破坏对象的实例化.上面的析构函数完全是这样,释放由new分配的动态分配的内存.

但是这个变量z怎么样?我应该如何手动销毁它/释放分配的内存z?当课程超出范围时会自动销毁吗?

Jas*_*son 5

它会自动被"销毁",虽然因为在你的例子中int z是POD类型,所以没有明确的析构函数......内存只是被回收.否则,如果对象有析构函数,则在主类的析构函数体A已完成但未退出之后,将调用它来正确清理该非静态数据成员的资源.

  • @curiousexplorer:[普通旧数据](http://stackoverflow.com/q/146452/10077). (3认同)