重载+,<<,a++,++b
++如何重载时如何区分前置++,还是后置++
在后置++的重载的函数加上一个无变量只有类型的参数以示区别。
#include <iostream>
using namespace std;
class Complex
{
public:
Complex();
Complex(double r,double i);
Complex Complex_add(Complex &d); //普通的函数调用
Complex operator+(Complex &d); //重载双目运算符
friend ostream & operator<<(ostream & out ,const Complex &c );//out不是Complex类型,只能重载为非静态成员函数,重载<<运算符
Complex & operator++();//重载前置++运算符,++a
Complex operator++(int);//重载后置运算符,a++
private:
double real;
double imag;
};
Complex::Complex()
{
real = 0;
imag = 0;
}
Complex::Complex(double r,double i)
{
real = r;
imag = i;
}
Complex Complex::Complex_add(Complex &d)
{
Complex c;
c.real = real+d.real;
c.imag = imag + d.imag;
return c;
}
Complex Complex::operator+(Complex &d)
{
Complex c;
c.real = real + d.real;
c.imag = imag + d.imag;
return c;
}
ostream & operator<<(ostream & out ,const Complex &c )
{
out<<'('<<c.real<<","<<c.imag<<")";
return out;
}
Complex & Complex::operator++()
{
(*this).real +=1;
(*this).imag +=1;
return *this;
}
Complex Complex::operator++(int)
{
Complex old = *this;
++(*this);
return old;
}
int main()
{
Complex a(1,1),b(2,2),c(3,3);
cout<<(a+b);
cout<<a++;
cout<<++b;
return 0;
}