多态
双目运算符的重载
实现点的加减
P1(1,2)
P2(2,3)
实现
P3=P1+P2=(3,5)
或
P3=P1-P2=(-1,-1)
#include<iostream>
using namespace std;
class Complex
{
private:
double real;
double imag;
public:
//*******************
Complex(){}
Complex(double r,double i):real(r),imag(i){}
Complex operator+(const Complex &c1); //这里如果去掉常,必须还要在加一个默认的构造函数否则主函数中的c3定义错误
Complex operator-(const Complex &c1);
//******************
注意上面这部分还可以改写为
Complex(double r=0.0,double i=0.0):real(r),imag(i){}
Complex operator+(const Complex &c1) const; //加了常之后必须要对原有的参数进行初始化
Complex operator-(const Complex &c2) const;
void display(){
cout<<"( "<<real<<", "<<imag<<" )"<<endl;
}
};
Complex Complex::operator+(const Complex &c1) {
return Complex(real+c1.real,imag+c1.imag);
}
Complex Complex::operator-(const Complex &c1){
return Complex(real-c1.real,imag-c1.imag);
}
int main()
{
Complex c1(3,4),c2(4,5),c3;
c1.display();
c2.display();
c3=c1+c2;
c3.display();
c3=c1-c2;
c3.display();
}
测试结果
( 3, 4 )
( 4, 5 )
( 7, 9 )
( -1, -1 )