用c++语言定义点类Point,有两个double 类型的数据成员x 和y,分别表示横坐标和纵 坐标,要求完成如下内容。 (1)定义坐标默认值为原点(0.0,0.0)的构造函数。 (2)以成员函数形式重载:前置“++”运算符和双目运算符“−”。 (3)用友元函数形式重载:双目运算符“+”(两种版本,详见实验指导部分)、插 入运算符。 (4)先根据main()主函数代码和运行结果,补充类的定义和相关函数的定义,写出完 整程序。
时间: 2024-02-24 07:55:22 浏览: 302
基于c++构建的坐标点类,可以实现坐标的各种操作
根据题目要求,可以定义如下的 Point 类:
```c++
#include<iostream>
using namespace std;
class Point {
private:
double x, y;
public:
Point(double x = 0, double y = 0) : x(x), y(y) {}; // 构造函数
Point operator++(); // 前置++运算符重载
friend Point operator+(Point p1, Point p2); // 友元函数+运算符重载
friend Point operator-(Point p1, Point p2); // 友元函数-运算符重载
friend ostream& operator<<(ostream& os, Point p); // 友元函数<<输出运算符重载
};
Point Point::operator++() {
x++;
y++;
return *this;
}
Point operator+(Point p1, Point p2) {
return Point(p1.x + p2.x, p1.y + p2.y);
}
Point operator-(Point p1, Point p2) {
return Point(p1.x - p2.x, p1.y - p2.y);
}
ostream& operator<<(ostream& os, Point p) {
os << "(" << p.x << ", " << p.y << ")";
return os;
}
int main() {
Point p1(1, 2), p2(3, 4), p3;
p3 = p1 + p2;
cout << "p1=" << p1 << endl; // 输出p1=(1, 2)
cout << "p2=" << p2 << endl; // 输出p2=(3, 4)
cout << "p3=" << p3 << endl; // 输出p3=(4, 6)
p3 = ++p1;
cout << "p1=" << p1 << endl; // 输出p1=(2, 3)
cout << "p3=" << p3 << endl; // 输出p3=(2, 3)
p3 = p1 - p2;
cout << "p3=" << p3 << endl; // 输出p3=(-1, -1)
return 0;
}
```
程序输出:
```
p1=(1, 2)
p2=(3, 4)
p3=(4, 6)
p1=(2, 3)
p3=(2, 3)
p3=(-1, -1)
```
阅读全文