image.png
C++中的加號(hào)重載:
例:實(shí)現(xiàn)復(fù)數(shù)的相加
#include<iostream>
using namespace std;
class Complex{
public:
Complex(double r=0.0,double i=0.0):real(r),imag(i){}
Complex operator+(const Complex &c2)const;
void display()const{
cout<<"("<<real<<","<<imag<<')'<<endl;
}
private:
double real,imag;
};
Complex Complex::operator+(const Complex &c2)const{
return Complex(real+c2.real,imag-c2.imag);
}
int main(){
Complex c1(5,4),c2(2,10),c3;
c3=c1+c2;
c3.display();
return 0;
}
image.png
C++中的前置++重載:
例:點(diǎn)的移動(dòng)
#include<iostream>
using namespace std;
class Point{
public:
Point(float a,float b):x(a),y(b){}
Point& operator++();
~Point(){}
void dispaly()const{
cout<<"("<<x<<","<<y<<")"<<endl;
}
private:
float x,y;
};
Point& Point::operator++(){
x++;y++;
return *this;
}
int main(){
Point p(1,2);
(++p).dispaly();
p.dispaly();
return 0;
}
image.png
C++中的后置++重載:
例:點(diǎn)的移動(dòng)
#include<iostream>
using namespace std;
class Point{
public:
Point(float a,float b):x(a),y(b){}
Point operator++(int);
~Point(){}
void dispaly()const{
cout<<"("<<x<<","<<y<<")"<<endl;
}
private:
float x,y;
};
Point Point::operator++(int){
Point p=*this;
x++;y++;
return p;
}
int main(){
Point p(1,2);
(p++).dispaly();
p.dispaly();
return 0;
}