永发信息网

c++类的小问题

答案:4  悬赏:30  手机版
解决时间 2021-05-10 08:42
  • 提问者网友:相思似海深
  • 2021-05-09 13:16

#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); 这个函数里面的

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

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

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

最佳答案
  • 五星知识达人网友:往事埋风中
  • 2021-05-09 14:05

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


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

全部回答
  • 1楼网友:孤独入客枕
  • 2021-05-09 17:40

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

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

加&号是为了节省速度。

  • 2楼网友:独钓一江月
  • 2021-05-09 16:04

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

  • 3楼网友:舊物识亽
  • 2021-05-09 15:21
传递引用参数用来避免复制对象,对于大对象来说运行速度更快,这里无所谓了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯