读书人

关于析构函数问,该怎么解决

发布时间: 2012-02-08 19:52:21 作者: rapoo

关于析构函数,问
#include <iostream.h>
class aaa
{
public:
~aaa(){cout < < "deconstructor " < <endl;};
void disp(){cout < < "disp " < <endl;};
};
void main()
{
aaa a;
a.~aaa();
a.disp();
}
我想问下,这段代码,为什么我已经执行了a.~aaa();这个析构函数后,它的其他方法怎么还能使用呢,按理说,资源已经释放了啊?请高手讲的清楚些,谢谢

[解决办法]
你这个对象是放在栈上的,只有在出了这个{}才会调用析构函数,你可以这样写。
void main()
{
{
aaa a;
a.disp();
}
}
要在debug模式下,如果release 可能会把中间的{}给优化掉。
或者
void main()
{
aaa *a=new aaa();
a-> disp();
delete a;
a=NULL;
}

读书人网 >C++

热点推荐