!析构函数的调用

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指针指向的地址,该地址已被释放。

 

posted @ 2015-03-12 11:18  qingsun_ny  阅读(249)  评论(0编辑  收藏  举报