ug10.0拐角倒角:为什么重载双目运算符不能成为成员函数??程序在里面

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/01 02:17:06
#include<iostream.h>
class complex{
public:
complex(){real=0;imag=0;}
complex(double r,double i){real=r;imag=i;}
complex operator+(complex &a1,complex&a2);
void show();
private:
double real;
double imag;
};
complex complex::operator+(complex &a1,complex &a2){
return complex(a1.real+a2.real,a1.imag+a2.imag);}
void complex::show(){
cout<<real<<" "<<imag<<endl;
}
int main(){
complex s1(2,4),s2(12,14),s3;
s3=s1+s2;
s3.show();
return 0;
}

你这个+函数被声明成了complex类的成员函数,调用+函数的complex类的实例会被认为是+左边的操作数,因此只要提供一个右边的操作数就行了。
按你的main函数的代码,你应该把+函数声明成complex的友员函数,而不是它的成员函数。

重载双目运算符,两个参数只能是友元函数啊。要成为成员函数,只能一个参数啊。