运算符重载
例题7-1
#include<iostream>
using namespace std;
class Complex{
double real;
double imag;
public:
Complex(double r1=0,double img=0):real(r1),imag(img){}
friend Complex add(const Complex &left,const Complex &right);
void show(){
cout<<real<<","<<imag<<endl;
}
};
Complex add(const Complex <,const Complex& rt){
return Complex(lt.real+rt.real,lt.imag+rt.imag);
}
int main(){
Complex c1(1,2),c2(3,4),c;
//c=c1+c2;
c=add(c1,c2);
c.show();
return 0;
}
例题7-2
#include<iostream>
using namespace std;
class Complex{
double real;
double imag;
public:
Complex(double r=0,double i=0):real(r),imag(i){}
friend Complex operator +(const Complex &L,const Complex &R);
void show(){
cout<<real<<","<<imag<<endl;
}
};
Complex operator +(const Complex &L,const Complex &R){
return Complex(L.real+R.real,L.imag+R.imag);
}
int main()
{
Complex c1(1,2),c2(3,4),c;
c=c1+c2;
c.show();
return 0;
}
例题:重载+
#include<iostream>
using namespace std;
class Complex{
double real;
double imag;
public:
Complex(double r=0,double i=0):real(r),imag(i){}
Complex operator +(const Complex &r);
void show(){
cout<<"("<<real<<","<<imag<<")\n";
}
};
Complex Complex::operator +(const Complex &r){
return Complex(real+r.real,imag+r.imag);
}
int main()
{
Complex c1(1,2),c2(3,4),c;
c=c1+c2;
c.show();
return 0;
}
例题:重载复数==:
#include<iostream>
using namespace std;
class Complex{
double real;
double imag;
public:
Complex(double r1=0,double img=0):real(r1),imag(img){}
friend bool operator ==(const Complex &L,const Complex &R);
};
bool operator==(const Complex &L,const Complex &R){
return (L.real==R.real&&L.imag==R.imag);
}
int main()
{
Complex c1(1,2),c2(3,4),c3(1,2);
if(c1==c2){
cout<<"C1==C2"<<endl;
}else{
cout<<"C1!=C2"<<endl;
}
if(c1==c3){
cout<<"C1==C3"<<endl;
}else{
cout<<"C1!=C3"<<endl;
}
return 0;
}
把上面的重载变成 成员函数:
#include<iostream>
using namespace std;
class Complex{
double real;
double imag;
public:
Complex(double r1=0,double img=0):real(r1),imag(img){}
bool operator ==(const Complex &R);
};
bool Complex :: operator==(const Complex &R){
return (real==R.real&&imag==R.imag);
}
int main()
{
Complex c1(1,2),c2(3,4),c3(1,2);
if(c1==c2){
cout<<"C1==C2"<<endl;
}else{
cout<<"C1!=C2"<<endl;
}
if(c1==c3){
cout<<"C1==C3"<<endl;
}else{
cout<<"C1!=C3"<<end