首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

析构函数有关问题

2012-03-23 
析构函数问题#includeiostream.h#includestdlib.hclassmember{private:inti,j,kpublic:member(intx0

析构函数问题
#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 ");挺住了 所以没输出

你按任意键之后就输出啦

热点排行