//本程序实现-- ++重载
#include <iostream>
using namespace std;
class Complex
{
private:
int a;
int b;
friend Complex& operator++(Complex& c1);//用全局方法实现前置++
friend Complex operator++(Complex& c1,int);//用全局方法实现后置++
//friend void operator<<(ostream& out, Complex& c1);//全局方法实现<<
friend ostream& operator<<(ostream& out, Complex& c1);
public:
Complex(int a = 0, int b = 0)
{
this->a = a;
this->b = b;
}
Complex& operator--()//用成员函数实现前置——
{
this->a--;
this->b--;
return *this;
}
Complex operator--(int)//用成员函数实现后置——
{
this->a--;
this->b--;
return *this;
}
void prinCom()
{
cout << a << "+" << b << "i" << endl;
}
};
Complex& operator++(Complex &c1)//全局方法实现前置++
{
c1.a++;
c1.b++;
return c1;
}
Complex operator++(Complex &c1,int)//全局方法实现后置++
{
//先使用,再让c1加加
Complex tmp = c1;
c1.a++;
c1.b++;
return tmp;
}
int main()
{
Complex c1(2, 4);
Complex c2(3, 4);
cout << "原始值为:";
c1.prinCom();
cout << "++c1:";
++c1;
c1.prinCom();
cout << "--c1:";
--c1;
c1.prinCom();
cout << "c1++:";
c1++;
c1.prinCom();
cout << "c1--:";
c1--;
c1.prinCom();
return 0;
}
以上代码实现了++ -- 的运算符重载,值得注意的是前置后后置只需要加一个参数区别,参数本身无意义,仅仅是区分标志而已。
还要注意后置与前置使用顺序的问题,先加再用和先用在加是用区别的,代码中特意提出了。
希望能够帮助到大家,谢谢!^*^.....