前置和后置++,–
题目描述:
定义一个Point类要求实现对点的前置和后置++,–
首先要明确,前置和后置++,–的计算过程
++i //表示i值直接加1,然后进行后续操作比如输出
i++ //表示先进行后续操作比如输出,再i+1
–的过程和上面类似
#include<iostream>
using namespace std;
class Point
{
private:
int x,y;
public:
Point()=default;
Point(int x,int y):x(x),y(y){}
Point &operator++(); //注意这里的写法,这表示前置++
Point operator++(int); //这表示后置++
Point &operator--();
Point operator--(int);
void show(){
cout<<x<<","<<y<<endl;
}
};
Point &Point::operator++()
{
x++;
y++;
return *this;
}
Point Point::operator++(int)
{
Point old=*this;
++(*this);
return old; //后置++,把原来的值返回
}
Point &Point::operator--()
{
x--;
y--;
return *this;
}
Point Point::operator--(int)
{
Point old=*this;
--(*this);
return old;
}
int main()
{
Point c1(2,3),c2;
c1.show();
c2=c1++;
c2.show();
c2=++c1;
c2.show();
c2=c1--;
c2.show();
}
结果
2,3
2,3
4,5
4,5