Operator overload definition form:
<function type> <class name> :: operator <operator> (<parameter list>)
{ function body { Note: Operators that cannot be overloaded include "::", ".", ". *", "?:"
#include<iostream>
using namespace std;
class Complex{
public:
double real, imag;
public:
Complex(double r=0, double i=0){
real=r;imag=i;}
double Real(){
return real;}
double Imag(){
return imag;}
Complex operator +(Complex&);
Complex operator +(double);
bool operator ==(Complex);
~Complex(){
}
};
Complex Complex::operator +(Complex &c){
Complex temp;
temp.real=real+c.real;
temp.imag=imag+c.imag;
return temp;
}
Complex Complex::operator +(double d){
Complex temp;
temp.real=real+d;
temp.imag=imag;
return temp;
}
bool Complex::operator ==(Complex c){
if(real==c.real && imag==c.imag) return true;
else return false;
}
int main(){
Complex c1(3,4),c2(5,6),c3;
cout<<"c1="<<c1.real<<"+j"<<c1.imag<<endl;
cout<<"c2="<<c2.real<<"+j"<<c2.imag<<endl;
c3=c1+c2;
cout<<"c1+c2="<<c3.real<<"+j"<<c3.imag<<endl;
c3=c1+6.5;
cout<<"c1+6.5="<<c3.real<<"+j"<<c3.imag<<endl;
if(c1==c2) cout<<"两个复数相等"<<endl;
else cout<<"两个复数不相等"<<endl;
return 0;
}
Operation result:
c1=3+j4
c2=5+j6
c1+c2=8+j10
c1+6.5=9.5+j4 The
two complex numbers are not equal