已解决问题

c++类的小问题

[ 标签:c++ ]

#include <iostream>
using namespace std;
class Complex //定义Complex类
{public:
Complex(){real=0;imag=0;} //定义构造函数
Complex(double r,double i){real=r;imag=i;} //构造函数重载
Complex complex_add(Complex &c2); //声明复数相加函数
void display(); //声明输出函数
private:
double real; //实部
double imag; //虚部
};

Complex Complex::complex_add(Complex &c2)
{Complex c;
c.real=real+c2.real;
cout<<real<<endl;
c.imag=imag+c2.imag;
return c;}

void Complex::display() //定义输出函数
{cout<<"("<<real<<","<<imag<<"i)"<<endl;}

int main()
{Complex c1(3,4),c2(5,-10),c3; //定义3个复数对象
c3=c1.complex_add(c2); //调用复数相加函数
cout<<"c1="; c1.display(); //输出c1的值
cout<<"c2="; c2.display(); //输出c2的值
cout<<"c1+c2="; c3.display(); //输出c3的值
return 0;
}
这段小代码实现的是两个数的相加

但有一点我不明白就是Complex complex_add(Complex &c2); 这个函数里面的

参数为什么要用引用,我试着将&号去掉,但最后的运行结果和加上&号是一样的》?

那么他为什么还要将他加上引用??

为什么谢谢,我很想知道!!

New-Cpp 回答:4 人气:54 解决时间:2009-10-14 17:49
  
满意答案
传递引用参数用来避免复制对象,对于大对象来说运行速度更快,这里无所谓了
匿名 回答采纳率:44.9% 2009-10-14 08:25
评价答案
  • 是否解决问题(参与评价0次)
  • 0
  • 0
  • 0
  • 是否原创答案(参与评价0次)
  • 0
  • 0
满意答案

为了节省内存空间和提高效率.

如果不用&,就会自动的调用拷贝构造函数来创建对象,再参与运算. 如果用了就把对象的引用传进去,节省空间和时间消耗. 最好的做法是再加上const来修饰

提问人的追问   2009-10-14 08:37

你们都学了多长时间了啊!

怎么好像对这些个问题!@基本上不用思考就能够回答出来

我刻意地去记,都很难理解其中的原理,这个是为什么啊!!

回答人的补充   2009-10-14 08:39
看得书多了,做多了就有一定的经验. 如果你想了解得更深,去看看林锐的高质量程序设计.要有一定的基础再去看,要不看了你会感觉像飘起来
提问人的追问   2009-10-14 08:40

晕,感觉现在越注重细节,越感觉c++越来越难!

回答人的补充   2009-10-14 08:41
所有的语言都是这样. 想要深入都不容易. 需要兴趣和耐心
單々裑♂川 回答采纳率:29.8% 2009-10-14 08:35
评价答案
  • 是否解决问题(参与评价0次)
  • 0
  • 0
  • 0
  • 是否原创答案(参与评价0次)
  • 0
  • 0

相关内容

其他答案

解:根据题意,即求3、4、7的最小公倍数。

提问人的追问   2009-10-14 08:15

你瞎扯淡,看清楚这啥代码在回答好吗?

匿名 回答采纳率:7.6% 2009-10-14 08:15

&表示引用,直接传地址。

不加&号是传值, 即先把结构中的数据复制过去,再进行各种操作。

加&号是为了节省速度。

一千零一块 回答采纳率:26.2% 2009-10-14 08:26