【发布时间】:2012-02-08 04:00:37
【问题描述】:
我有一个关于析构函数的基本问题。
假设我有以下课程
class A
{
public:
int z;
int* ptr;
A(){z=5 ; ptr = new int[3]; } ;
~A() {delete[] ptr;};
}
现在析构函数应该销毁一个对象的实例。 上面的析构函数正是这样做的,它释放了由 new 分配的动态分配的内存。
但是变量z 呢?我应该如何手动销毁它/释放z分配的内存?当类超出范围时它会自动销毁吗?
【问题讨论】:
-
z将被自动清理。您必须删除ptr,因为它是堆分配的,但z没有分配在堆上。 -
您在这里忽略了Rule of Three,只是为了提醒您。 :)
-
好点!谢谢:D
-
此外,使用
std::vector代替数组将避免必须定义析构函数以及三规则问题。
标签: c++ destructor