假设你有一个名为Fool
的类的对象。
class Fool
{
int a,b,c;
double* array ;
//...
~Fool()
{
// destroys the array..
delete[] array ;
}
};
Fool *fool = new Fool() ;
现在,我知道不应该这样做,但有些傻瓜仍然调用了fool
上的析构函数。 fool->~Fool();
。
那么这意味着fool
的内存被释放了(即a,b,c无效)还是只有~Fool()
函数中的任何回收发生了(例如仅删除数组?)
所以我的问题是,析构函数只是在对象上调用delete
时调用的另一个函数吗?还是它做得更多?
new char[]
的结果赋值给array
,析构函数才可能有效。 - Kerrek SB