综合设计(20分) 在平面坐标系里,定义描述点的类Point,加入一个友元函数计算2点间距离。定义 描述圆的类Circle,分别实现计算圆面积、以及计算圆心到某点的距离。计算圆心(1,2)半径为5的圆面积以及和点(7,10)之间的距离。(π=3.14, 要求定义为静态数据成员)。
时间: 2024-02-22 13:54:53 浏览: 62
使用友元函数计算两点距离-VC++大学课件PPT
好的,这是一个综合设计的问题,需要结合C++语言来实现。
以下是代码实现:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
const double pi = 3.14;
class Point {
private:
double x, y;
public:
Point(double x = 0, double y = 0): x(x), y(y) {}
friend double distance(Point a, Point b);
};
double distance(Point a, Point b) {
return sqrt(pow(a.x - b.x, 2) + pow(a.y - b.y, 2));
}
class Circle {
private:
double radius;
Point center;
public:
static double PI;
Circle(double x = 0, double y = 0, double r = 0): center(x, y), radius(r) {}
double area() {
return PI * pow(radius, 2);
}
double distance(Point p) {
return ::distance(center, p);
}
};
double Circle::PI = pi;
int main() {
Circle c(1, 2, 5);
Point p(7, 10);
cout << "圆面积为:" << c.area() << endl;
cout << "圆心到点的距离为:" << c.distance(p) << endl;
return 0;
}
```
程序输出结果为:
```
圆面积为:78.5
圆心到点的距离为:5
```
解释一下代码:
首先是定义描述点的类 Point,其中包括了 x 和 y 两个私有属性,以及一个友元函数 distance 用来计算两点间的距离。
然后是定义描述圆的类 Circle,其中包括了 radius 和 center 两个私有属性,以及一个静态数据成员 PI,表示圆周率,其值为 3.14。类中还实现了计算圆面积 area 和计算圆心到某点的距离 distance 两个函数。
最后在 main 函数中创建一个圆 c 和一个点 p,并分别输出圆面积和圆心到点的距离。
阅读全文