综合设计(20分) 在平面坐标系里,定义描述点的类Point,加入一个友元函数计算2点间距离。定义 描述圆的类Circle,分别实现计算圆面积、以及计算圆心到某点的距离。π=3.14, 要求定义为静态数据成员
时间: 2024-02-22 07:55:08 浏览: 114
好的,我可以帮你解决这个问题。
以下是 Point 类和 Circle 类的实现代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double PI = 3.14;
class Point {
private:
double x;
double y;
public:
Point(double _x = 0, double _y = 0) : x(_x), y(_y) {}
friend double distance(const Point& a, const Point& b);
};
double distance(const Point& a, const Point& b) {
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx * dx + dy * dy);
}
class Circle {
private:
Point center;
double radius;
static double pi;
public:
Circle(const Point& _center = Point(), double _radius = 0) : center(_center), radius(_radius) {}
double area() const {
return pi * radius * radius;
}
double distance(const Point& p) const {
return ::distance(center, p);
}
};
double Circle::pi = PI;
int main() {
Point p1(0, 0);
Point p2(3, 4);
cout << "Distance between p1 and p2 is " << distance(p1, p2) << endl;
Circle c(Point(1, 1), 2);
cout << "Area of the circle is " << c.area() << endl;
Point p3(4, 5);
cout << "Distance between center and p3 is " << c.distance(p3) << endl;
return 0;
}
```
在这个实现中,Point 类包含两个私有数据成员 x 和 y,表示点的坐标。它还有一个友元函数 distance,用来计算两个点之间的距离。
Circle 类包含一个私有数据成员 center,表示圆的中心点,以及一个私有数据成员 radius,表示圆的半径。它还有一个静态数据成员 pi,表示圆周率。它的成员函数 area 用来计算圆面积,成员函数 distance 用来计算圆心到某点的距离。在 distance 函数中,我们使用了全局作用域解析运算符 :: 来调用 distance 友元函数。
在 main 函数中,我们创建了两个点 p1 和 p2,并计算了它们之间的距离。然后创建了一个圆 c,计算了它的面积,并计算了圆心到另一个点 p3 的距离。
希望这个实现能够解决你的问题。
阅读全文