注册 登录
编程论坛 C++教室

关于运行结果的闪现问题(我用的是dev c++ 编译的)

tianxiao110 发布于 2010-07-31 10:54, 967 次点击
include<iostream>
using namespace std;
class  box
{
       public:
       box(int x,int y,int z)
       {
               chang=x;
               kuan=y;
               gao=z;
       }
       virtual void show ()
       {
            cout<<chang<<"  "<<kuan<<"  "<<gao<<endl;
       }
       virtual ~box()
       {
             cout<<"基类清理"<<endl;
       }      
      
       protected:
       int chang;
       int kuan;
       int gao;
};
class box1:public box
{
      public:
      box1(int x,int y,int z,int u):box(x,y,z)
      {
            color=u;
      }
      virtual void show()
      {
           cout<<chang<<"  "<<kuan<<"  "<<gao<<"  "<<color<<endl;
      }
      virtual ~box1()
      {
              cout<<"派生类清理"<<endl;
      }        
      protected:
      int color;
};


int   main()
{
      box b(1,1,1);
      box1 bb(1,1,1,1);
      box *p;
      p=&b;
      p->show();
      p=&bb;
      p->show();
      system("pause");
      return(0);
      system("pause");//   我已经用了俩次system("pause");希望能看清点可是,我还是看不到析构函数的输出语句??????
 
      
}
8 回复
#2
mxs8102010-07-31 11:06
      system("pause");
      return(0);
      system("pause");
你 把system("pause");放在return后面不管用的~~

你可以在return设置一个断点,不就可以看见结果了吗?
#3
tianxiao1102010-07-31 11:18
回复 2楼 mxs810
谢谢你,但你能告诉我怎么设定断点吗??
#4
东海一鱼2010-07-31 11:37
virtual ~box()
       {                              
             cout<<"基类清理"<<endl; //这里设断
        }  

因为你的对象是创建在‘栈’上的,所以在函数返回时,编译器会给你自动插入一段调用析构函数的代码。但这段代码你是看不到的。你只能在上面的位置下断,看到它调用的过程。   
#5
tianxiao1102010-07-31 11:44
回复 4楼 东海一鱼
你能帮我把程序设定修改下吗?让它慢点让我能看见结果,谢谢咯,呵呵。
#6
mxs8102010-07-31 11:45
回复 3楼 tianxiao110
dev我没有用过
你看看是不是ctrl + F5,
然后进入调试状态试试
#7
东海一鱼2010-07-31 11:52
没用过DEV

用个笨办法,在
virtual ~box()
       {                              
             cout<<"基类清理"<<endl;
             system("pause");       //这里加个
        }

#8
tianxiao1102010-07-31 16:38
回复 7楼 东海一鱼
谢谢。噢啦
#9
MyStar2010-07-31 18:19
呵呵
1