定义Point类,有坐标x,y两个成员变量,利用友元函数对Point类重载“++”运算符,实现对坐标值沿着平行于y=x的向上改变1。具体要求如下:
-
编写程序定义Point类,在类中定义整型的私有成员变量x,y;
-
在类中定义两个友元函数,分别重载前置++和后置++;
-
编写主函数测试。
注意函数有无返回值的区别,以及返回值是否带有&引用符号。
#include <iostream>
using namespace std;
class Point {
private:
int x, y;
public:
Point(int x = 0, int y = 0) : x(x), y(y) {}
// 前置++运算符重载
friend Point& operator++(Point& p);
// 后置++运算符重载
friend Point operator++(Point& p, int);
void display() {
std::cout << "(" << x << ", " << y << ")" << std::endl;
}
};
// 前置++运算符重载实现
Point& operator++(Point& p) {
p.x += 1;
p.y += 1;
return p;
}
// 后置++运算符重载实现
Point operator++(Point& p, int) {
Point temp = p;
p.x += 1;
p.y += 1;
return temp;
}
int main() {
Point p1(2, 3);
cout << "原始坐标:";
p1.display();
++p1; // 使用前置++运算符
cout << "使用前置++运算符后的坐标:";
p1.display();
p1++; // 使用后置++运算符
cout << "使用后置++运算符后的坐标:";
p1.display();
return 0;
}