运算符重载
- 可以重载为类的友元函数、类的成员函数、普通函数
- 格式:
返回值类型 operator运算符 (参数)
:Complex operator+(Complex a);
- 对于二目运算符:重载为类外的友元函数和重载为类外成员函数不同,前者可以自动把参数强制类型转换,而后者因为要传入this指针,是无法自动强制类型转换的
- 加减运算符、插入析取运算符的重载举例如下
#include<iostream>
#include<iomanip>
using namespace std;
class Complex
{
private:
double r,i;
public:
Complex(double rr = 0,double ii = 0):r(rr),i(ii){
}
Complex operator+(Complex a);
friend Complex operator-(Complex a,Complex b);
friend ostream &operator<<(ostream &os, Complex &a);
friend istream &operator>>(istream &is, Complex &a);
void show(){
cout<<r<<"+"<<i<<"i"<<endl;}
};
Complex Complex::operator+(Complex a)
{
return Complex(r+a.r,i+a.i);
}
Complex operator-(Complex a,Complex b)
{
return Complex(a.r-b.r,a.i-b.i);
}
ostream &operator<<(ostream &os, Complex