我有关于析构函数的基本问题.
假设我有以下课程
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?当课程超出范围时会自动销毁吗?
它会自动被"销毁",虽然因为在你的例子中int z是POD类型,所以没有明确的析构函数......内存只是被回收.否则,如果对象有析构函数,则在主类的析构函数体A已完成但未退出之后,将调用它来正确清理该非静态数据成员的资源.
| 归档时间: |
|
| 查看次数: |
6359 次 |
| 最近记录: |