定义一个二维坐标点类Point 数据成员(访问权限定义为protected): 横坐标、纵坐标 成员函数(访问权限定义为public): 带默认参数的构造函数:数据成员初始化 Point(double _x = 0.0, double _y = 0.0); 拷贝构造函数:数据成员初始化 Point(const Point &point); 设置横坐标 设置纵坐标 获取横坐标(定义为const成员函数) 获取纵坐标(定义为const成员函数) 打印点的坐标信息(定义为const成员函数),格式:(x, y) 要求:将类的定义与类成员函数的实现分开。 定义一个普通函数用来计算两个Point对象的距离: double pdistance(const Point &p1, const Point &p2); 并将pdistance函数声明为类Point的友元函数,使其能够直接访问Point的保护数据成员。 定义一个普通函数用来计算两个Point对象的中点: Point midpoint(const Point &p1, const Point &p2); 并将midpoint函数声明为类Point的友元函数,使其能够直接访问Point的保护数据成员。
时间: 2023-06-12 07:07:38 浏览: 168
类Point的定义:
```c++
class Point {
protected:
double x;
double y;
public:
Point(double _x = 0.0, double _y = 0.0);
Point(const Point &point);
void setX(double _x);
void setY(double _y);
double getX() const;
double getY() const;
void print() const;
friend double pdistance(const Point &p1, const Point &p2);
friend Point midpoint(const Point &p1, const Point &p2);
};
```
类Point的实现:
```c++
Point::Point(double _x, double _y) : x(_x), y(_y) {}
Point::Point(const Point &point) {
x = point.x;
y = point.y;
}
void Point::setX(double _x) {
x = _x;
}
void Point::setY(double _y) {
y = _y;
}
double Point::getX() const {
return x;
}
double Point::getY() const {
return y;
}
void Point::print() const {
cout << "(" << x << ", " << y << ")" << endl;
}
double pdistance(const Point &p1, const Point &p2) {
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return sqrt(dx * dx + dy * dy);
}
Point midpoint(const Point &p1, const Point &p2) {
double mx = (p1.x + p2.x) / 2.0;
double my = (p1.y + p2.y) / 2.0;
return Point(mx, my);
}
```
阅读全文