为了区别前置++和后置++,c++编译器默认前置++,对后置++添加了占位符来加以区分。
例如 用成员函数实现操作符重载,分别实现前置++和后置++。
class Complex
{
private:
int a;
int b;
public:
Complex(int a = 0, int b = 0)
{
this->a = a;
this->b = b;
}
void print()
{
cout << "a:" << a << endl;
cout << "b:" << b << endl;
}
// 操作符重载首先是通过函数实现的。operator+是函数名。
Complex& operator+(Complex& c2)
{
a = a + c2.a;
b = b + c2.b;
return *this;
}
Complex& operator++()
{
this->a++;
this->b++;
return *this;
}
Complex operator++(int) // 添加占位符
{
Complex tmp;
tmp = *this;
this->a++;
this->b++;
return tmp;
}
};
void main()
{
Complex c1(1, 2), c2(3, 4);
Complex c3 = c1 + c2;//相当于 Complex c3 = c1.operator+(c2);
c3.print();
Complex c4(5, 6);
++c4;//相当于 c4.operator++();
c4.print();
Complex c5(7, 8);
c5++;//相当于 c5.operator++(0);
c5.print();
}