设计一个点类Point表示二维平面点的集合,数据成员由点坐标值表示,其结构如下: 三个重载构造函数: 一个是无参数的构造函数; 一个是带坐标值参数的构造函数,实现对数据成员的初始化; 一个是copy构造函数,实现用一个对象初始化本对象; 两个重载成员函数: void offert(int , int ); 实现点的偏移,参数是偏移量; void offert(Point &); 实现点的偏移,参数Point类对象是偏移量; 8个运算符重载函数: bool operator == (Point &); 判断两个点对象是否相等; bool operator != (Point &); 判断两个点对象是否不相等; void operator += (Point &); 将两个点对象相加; void operator −= (Point &); 将两个点对象相减; void operator ++ (); 将当前对象自增1(前置); void operator −− (); 将当前对象自减1(前置); Point operator ++ (int k); 将当前对象自增1(后置); Point operator −− (int k); 将当前对象自减1(后置); friend Point& operator + (Point &, Point &); 将两个点对象相加; friend Point& operator − (Point &, Point &); 将两个点对象相减; 两个成员函数提供实例对象对私有数据的访问: int GetX(); int GetY(); 公有成员函数void Display();输出对象的数据成员;
时间: 2023-12-12 14:05:33 浏览: 182
根据题目要求,可以设计如下的 Point 类:
```cpp
class Point {
private:
int x; // 横坐标
int y; // 纵坐标
public:
Point(); // 无参数构造函数
Point(int xx, int yy); // 带参数构造函数
Point(const Point& p); // copy构造函数
void offert(int dx, int dy); // 点的偏移,参数是偏移量
void offert(Point& p); // 点的偏移,参数Point类对象是偏移量
bool operator==(Point& p); // 判断两个点对象是否相等
bool operator!=(Point& p); // 判断两个点对象是否不相等
void operator+=(Point& p); // 将两个点对象相加
void operator-=(Point& p); // 将两个点对象相减
void operator++(); // 将当前对象自增1(前置)
void operator--(); // 将当前对象自减1(前置)
Point operator++(int k); // 将当前对象自增1(后置)
Point operator--(int k); // 将当前对象自减1(后置)
friend Point& operator+(Point& p1, Point& p2); // 将两个点对象相加
friend Point& operator-(Point& p1, Point& p2); // 将两个点对象相减
int GetX(); // 获取横坐标
int GetY(); // 获取纵坐标
void Display(); // 输出对象的数据成员
};
```
其中,各个成员函数的实现如下:
```cpp
Point::Point() {
x = 0;
y = 0;
}
Point::Point(int xx, int yy) {
x = xx;
y = yy;
}
Point::Point(const Point& p) {
x = p.x;
y = p.y;
}
void Point::offert(int dx, int dy) {
x += dx;
y += dy;
}
void Point::offert(Point& p) {
x += p.x;
y += p.y;
}
bool Point::operator==(Point& p) {
return x == p.x && y == p.y;
}
bool Point::operator!=(Point& p) {
return !(*this == p);
}
void Point::operator+=(Point& p) {
x += p.x;
y += p.y;
}
void Point::operator-=(Point& p) {
x -= p.x;
y -= p.y;
}
void Point::operator++() {
x++;
y++;
}
void Point::operator--() {
x--;
y--;
}
Point Point::operator++(int k) {
Point tmp(*this);
x++;
y++;
return tmp;
}
Point Point::operator--(int k) {
Point tmp(*this);
x--;
y--;
return tmp;
}
Point& operator+(Point& p1, Point& p2) {
Point tmp(p1.x + p2.x, p1.y + p2.y);
return tmp;
}
Point& operator-(Point& p1, Point& p2) {
Point tmp(p1.x - p2.x, p1.y - p2.y);
return tmp;
}
int Point::GetX() {
return x;
}
int Point::GetY() {
return y;
}
void Point::Display() {
cout << "(" << x << ", " << y << ")" << endl;
}
```
阅读全文