鱼C论坛

 找回密码
 立即注册
查看: 3780|回复: 8

析构函数问题,问什么不输出

[复制链接]
发表于 2012-4-8 19:58:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include<iostream>
using namespace std;
class complex
{private:
         int real,image;
public:
        complex(int r,int i)
        {real=r;image=i;}
        complex()
        {real=0;image=0;}
        complex(complex &r)
        {real=r.image;image=r.image;}
        ~complex()//调用析构函数
        {cout<<'\n'<<"调用析构函数";}
        void print(void)
        {cout<<"xushu="<<real<<"+"<<image<<"i"<<'\n';}
        
};
void main(void)
{complex r1(20,40);
r1.print();
complex t1;
t1.print();{:1_1:}

complex r3(r1);
r3.print();

system("pause");
}//书上写的是最后会调用析构函数,但是运行后并没出现“调用析构函数字样啊”,为什么,另外加一句,析构函数的位置在class里面是不是可以随便放。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-8 21:03:31 | 显示全部楼层
调用了。。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-9 16:11:38 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-9 17:19:59 | 显示全部楼层
淡淡的幽香 发表于 2012-4-9 16:11
但是运行后不显示又是怎么回事

析构函数是在主函数运行完后才调用的,也就是说在system("pause");之后才调用
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-9 22:58:39 | 显示全部楼层

回帖奖励 +3 鱼币

照如下改:
  1. #include<iostream>
  2. using namespace std;
  3. class complex
  4. {
  5. private:
  6.         int real,image;
  7. public:
  8.         complex(int r,int i)
  9.         {real=r;image=i;}
  10.         complex()
  11.         {real=0;image=0;}
  12.         complex(complex &r)
  13.         {real=r.image;image=r.image;}
  14.         ~complex()//调用析构函数
  15.         {cout<<'\n'<<"调用析构函数";}
  16.         void print(void)
  17.         {cout<<"xushu="<<real<<"+"<<image<<"i"<<'\n';}
  18.        
  19. };
  20. void main(void)
  21. {
  22.         {
  23.                 complex r1(20,40);
  24.                 r1.print();
  25.                 complex t1;
  26.                 t1.print();
  27.                
  28.                 complex r3(r1);
  29.                 r3.print();
  30.         }
  31.         system("pause");
  32. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-10 15:08:05 | 显示全部楼层
仰望天上的光 发表于 2012-4-9 22:58
照如下改:

还是不显示,怎么回事:sleepy:
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-4-10 15:08:52 | 显示全部楼层
cj1006@126.com 发表于 2012-4-9 17:19
析构函数是在主函数运行完后才调用的,也就是说在system("pause");之后才调用

那怎样才能看到屏幕上确实调用析构函数呢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-10 15:48:15 | 显示全部楼层
为什么不用标准c++的语法?C99标准要求main函数有返回值的
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-4-10 18:12:32 | 显示全部楼层
淡淡的幽香 发表于 2012-4-10 15:08
还是不显示,怎么回事

你应当关闭原来的工作空间,重新打开个新的工作空间,再运行这个程序。否则运行的还是之前的程序。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-12 15:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表