读书人

为什么不能输出解决思路

发布时间: 2012-04-15 18:39:21 作者: rapoo

为什么不能输出
#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();

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

system("pause");
}//书上写的是最后会调用析构函数,但是运行后并没出现“调用析构函数字样啊”,为什么,另外加一句,析构函数的位置在class里面是不是可以随便放。

[解决办法]
因为system("pause");
需要你敲击任意键之后才能看到输出
[解决办法]
因为你的对象complex r1还没有析构,去掉system("pause")或者改成
void main(void)
{
{complex r1(20,40);
r1.print();
complex t1;
t1.print();

complex r3(r1);
r3.print();}
system("pause");
}
[解决办法]
是因为析构函数刚输出字符,窗口就被关闭了,闪那一下你的眼睛没看到而已。
你把main函数改成下面这种样子。

C/C++ code
void main(void){  {    complex r1(20,40);    r1.print();    complex t1;    t1.print();     complex r3(r1);    r3.print();  }   system("pause");}
[解决办法]
嗯,
C/C++ code
system("pause");
[解决办法]
用编译器自带的工具运行程序就行
[解决办法]
1.析构函数的位置在class里面是不是可以随便放。
回答:
可以随便放,但是需要保证它是public作用域!

2.有输出的:你需要按任意键继续。由于这句:system("pause");

[解决办法]
LZ问析构函数的位置在class里面是不是可以随便放。

个人认为你是不是认为在类里只能有一个private和一个public?如果这样的话,容易产生如题问题!

在类里面可以有多个private和public,protected!访问符。他们的个数一般是没有限制,包括他们的出现次序也是不要求的。但是从可读性上来讲,一般把public的成员放一块,private成员放一块,public类靠前位置,private放在靠后位置,这是为了提高阅读性,让别人一眼就知道什么是能够看到的(public)使用的,是么是不能够访问的(private)。如果你喜欢,或者有自己的风格,每个成员都加一个对应的访问符等等其他风格,那也是可以的。只要坚持自己一贯风格就行!
另外,构造函数,析构函数必须是public。这是个鹤立鸡群的另类而已!

嗦了两句!多多包涵

读书人网 >C++

热点推荐