c++关于运载符重载小问题

来源:百度知道 编辑:UC知道 时间:2024/06/17 14:41:53
实现复数与实数,复数相加:
#include<iostream>
using namespace std;
class complex
{
public:
complex(){real=0;imag=0;}
complex(double a,double b){real=a;imag=b;}
complex(double a){real=a;imag=0;}
void display();
friend complex operator +(complex &,complex &);
private:
double real;
double imag;
};
void complex::display()
{
cout<<real;
if(imag>0)
cout<<"+"<<imag<<"i"<<endl;
else if(imag<0)
cout<<imag<<"i"<<endl;
else
cout<<endl;
}
complex operator +(complex &a,complex &b)
{
return complex(a.real+b.real,a.imag+b.imag);
}
int main()
{
complex c1(3,4),c2(5,-10),c3;
c3=2.5+c1;
c3.display();
return 0;
}
编译问题:
c\例10.10\main.cpp(32) : error C2678: 二进制“+”: 没有找到接受“double”类型的左操作数的运算符(或没有可接受的

修正后的代码,自己想想吧
#include<iostream>
using namespace std;
///////////////////////////////////
class complex;
complex operator +(complex ,complex );
////////////////////////////////////
class complex
{
public:
complex(){real=0;imag=0;}
complex(double a,double b){real=a;imag=b;}
complex(double a){real=a;imag=0;}
void display();
friend complex operator +(complex ,complex );
private:
double real;
double imag;
};
void complex::display()
{
cout<<real;
if(imag>0)
cout<<"+"<<imag<<"i"<<endl;
else if(imag<0)
cout<<imag<<"i"<<endl;
else
cout<<endl;
}
complex operator +(complex a,complex b)
{
return complex(a.real+b.real,a.imag+b.imag);
}
int main()
{
complex c1(3,4),c2(5,-10),c3;
c3=2.5+c1;
c3.display();
return 0;