【发布时间】:2011-11-01 14:09:51
【问题描述】:
假设您有一个class Fool 的对象。
class Fool
{
int a,b,c;
double* array ;
//...
~Fool()
{
// destroys the array..
delete[] array ;
}
};
Fool *fool = new Fool() ;
现在,I know you shouldn't,但无论如何,有些傻瓜会在 fool 上调用析构函数。 fool->~Fool();.
这是否意味着fool 的内存已被释放(即a、b、c 无效)或这是否意味着仅在~Fool() 函数中发生任何释放(即数组是只删除?)
所以我想我的问题是,析构函数只是另一个函数,它在对象上调用delete 时被调用,还是它做的更多?
【问题讨论】:
-
也许值得指出的是,你的类定义不足;只有将
new char[]的结果分配给array时,析构函数才可能有效。
标签: c++ memory-management destructor