1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用
时间: 2024-03-10 09:46:31 浏览: 108
好的,我明白了。以下是代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y;
static int count;
public:
Point(double _x, double _y): x(_x), y(_y) {
count++;
}
void print() {
cout << "(" << x << ", " << y << ")" << endl;
}
static int getCount() {
return count;
}
friend double distance(const Point& p1, const Point& p2) {
return sqrt(pow((p1.x - p2.x), 2) + pow((p1.y - p2.y), 2));
}
Point midpoint() const {
return Point(x / 2, y / 2);
}
};
int Point::count = 0;
int main() {
Point p1(3, 4);
Point p2(5, 6);
Point p3(8, 10);
p1.print();
p2.print();
p3.print();
cout << "Number of points created: " << Point::getCount() << endl;
cout << "Distance between p1 and p2: " << distance(p1, p2) << endl;
Point mp = p1.midpoint();
cout << "Midpoint of p1 and origin: ";
mp.print();
const Point cp(2, 2);
cout << "Midpoint of cp and origin: ";
cp.midpoint().print();
const Point* pp = new Point(1, 1);
cout << "Distance between cp and pp: " << distance(cp, *pp) << endl;
delete pp;
return 0;
}
```
解释一下:
- 首先定义了一个类 Point,包含私有的 x, y 坐标和一个静态成员变量 count 表示创建的点的个数。
- 构造函数接受两个参数,表示点的坐标,并且每次创建点时 count 加一。
- print 函数是一个普通的成员函数,用于输出点的坐标。
- getCount 函数是一个静态成员函数,用于返回创建的点的个数。
- 友元函数 distance 接受两个 Point 类型的参数,用于计算两点之间的距离。
- midpoint 函数是一个常成员函数,用于计算点与原点之间的中点。
- 在 main 函数中创建了三个点,分别输出它们的坐标,以及创建的点的个数。
- 调用 distance 函数计算 p1 和 p2 之间的距离,并输出。
- 调用 midpoint 函数计算 p1 和原点之间的中点,并输出。
- 创建了一个常对象 cp,并用它调用 midpoint 函数,输出它和原点之间的中点。
- 创建了一个常指针 pp,用它和 cp 计算距离,并输出结果。
- 最后释放了 pp 所指向的内存空间。
阅读全文