读书人

析构函数有关问题

发布时间: 2012-03-23 12:06:21 作者: rapoo

析构函数问题
#include <iostream.h>
#include <stdlib.h>

class member
{
private:
int i,j,k;
public:
member(int x = 0){i = j = k = x;}
~member()
{
cout < < "~member() " < <endl;
}
};

class withMember
{
private:
member Q,R,S;
int i;
public:
withMember(int I):i(I){}
~withMember()
{
cout < < "~withMember() " < <endl;
}
};

int main()
{
withMember WM(1);
system( "pause ");
return 0;
}


这段代码的结果怎么是什么都没有输出?

我觉得应该输出:
~withMember()
~member()

[解决办法]

system( "pause ")时 WM 还没出作用域 还不能析构呀. 改为:

int main()
{
{
withMember WM(1);
}
system( "pause ");
return 0;
}
[解决办法]
是有输出的
你用system( 'pause ');
cmd上提示 按任意建继续 是提示你恢复执行程序
你按完回车后会发现 析构函数被调用了,输出结果是
~withMember()
~member()
~member()
~member()
按任意建继续...

你可以通过将system那一行屏蔽来检验
int main()
{
withMember WM(1);
//system( "pause ");
return 0;
}

就直接输出结果了

[解决办法]
你错了

有输出啊

只是暂时被system( "pause ");挺住了 所以没输出

你按任意键之后就输出啦

读书人网 >C++

热点推荐