error C2679 为什么把引用去掉就能运行通过?
#include<iostream.h>
class Complex
{
public:
Complex(){real=0;image=0;}
Complex(double r){real=r;image=0;}
Complex(double r,double i){real=r;image=i;}
friend Complex operator+ (Complex &c1,Complex &c2);
void display();
private:
double real;
double image;
} ;
Complex operator+(Complex &c1,Complex &c2)
{
return Complex(c1.real+c2.real,c1.image+c2.image);
}
void Complex:: display()
{
cout<<"("<<real<<","<<image<<"i)"<<endl;
}
int main()
{
Complex c1(3,4),c2(5,-10),c3;
c3=c1+2.5;
c3.display();
return 0;
}
错误信息::\Program Files\pvc6\MSDev98\MyProjects\kkk\kkk.cpp(26) : error C2679: binary '+' : no operator defined which takes a right-hand operand of type 'const double' (or there is no acceptable conversion)
Error executing cl.exe.
当我把重载函数中的参数Complex &c1,Complex &c2 全变成Complex c1,Complex c2时编译就没有错误,这是为什么?