c++ 有关复数重载运算符的问题求教....

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:57:32
#include<iostream>
using namespace std;
class complex
{
public:
complex(double r=0.0,double i=0.0){real=r;image=i;}
complex operator+(complex c2);
void display(){cout<<real<<endl<<image<<endl;}
private:
double real;
double image;
};

complex complex::operator +(complex c2)
{
complex c;
c.real=c2.real+real;
c.image=c2.image+image;
return complex(c.real,c.image);
}
void main()
{
complex c1(4,5),c2(6,7),c3;
c3=c1+c2;
c3.display();
}
//---求助对于上面程序我有一个疑问。。程序怎么知道返回的c.real,c.image,是赋值给c3,real,image的呢?

因为没有重载赋值operator =,也没有定义拷贝构造函数
complex(const complex &)

所以编译器会采用浅拷贝,来讲+后的结果拷给c3

=号其实是按位复制的....所以real对real,image对image