!析构函数的调用
if (...)
{
class a;
}
在if语句结束后,class a的析构函数被调用。
很简单但是经常会疑惑或者犯错误,不知道析构函数什么时候调用。
而且如果class a中含有指针,然后给class b赋值后,经常会犯一个知名的错误。
class a{
int i;
int * pointer;
...
}
class b{
int i;
int * pointer;
}
if (...)
{
class a = new a();
b = a;
}
到这一步,b.i是有值的,而b.pointer是空,因为从if出来后,a的析构函数调用,将指针删除,而b的指针指向的也是a指针指向的地址,该地址已被释放。