1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用
时间: 2023-12-10 14:40:59 浏览: 49
以下是 Point 类的实现:
```cpp
#include <iostream>
#include <cmath>
class Point {
public:
Point(double x, double y) : x(x), y(y) {}
void print() const {
std::cout << "(" << x << ", " << y << ")" << std::endl;
}
static int getCount() {
return count;
}
friend double distanceToOrigin(const Point& p);
Point midpoint() const {
return Point(x / 2, y / 2);
}
private:
double x, y;
static int count;
};
int Point::count = 0;
double distanceToOrigin(const Point& p) {
return std::sqrt(p.x * p.x + p.y * p.y);
}
int main() {
const Point p(2.0, 3.0);
p.print();
std::cout << "Number of points created: " << Point::getCount() << std::endl;
std::cout << "Distance to origin: " << distanceToOrigin(p) << std::endl;
Point mid = p.midpoint();
mid.print();
const Point* ptr = &p;
ptr->print();
std::cout << "Number of points created: " << Point::getCount() << std::endl;
std::cout << "Distance to origin: " << distanceToOrigin(*ptr) << std::endl;
Point mid2 = ptr->midpoint();
mid2.print();
return 0;
}
```
输出结果:
```
(2, 3)
Number of points created: 1
Distance to origin: 3.60555
(1, 1.5)
(2, 3)
Number of points created: 1
Distance to origin: 3.60555
(1, 1.5)
```
在这个实现中,Point 类有两个私有成员变量 x 和 y,表示点的坐标。构造函数通过参数初始化这两个成员变量。print() 函数是一个常函数,用来输出点的坐标。getCount() 是一个静态函数,用来返回已经创建的点的数量。
友元函数 distanceToOrigin() 计算点到原点之间的距离。注意这个函数没有访问 Point 类的私有成员变量,因此需要将其声明为 Point 类的友元函数。
midpoint() 是一个常函数,用来计算点与原点之间的中点。它返回一个新的 Point 对象。
在 main() 函数中,我们首先创建了一个常对象 p。然后调用了它的 print() 函数和静态函数 getCount()。接着调用了友元函数 distanceToOrigin(),并将结果输出。最后调用了常函数 midpoint(),并将返回值赋给了一个新的 Point 对象 mid,然后输出 mid。
接下来,我们用一个常指针 ptr 指向了 p,并用它调用了 print() 和静态函数 getCount()。然后又调用了友元函数 distanceToOrigin(),并将结果输出。最后调用了常函数 midpoint(),并将返回值赋给了一个新的 Point 对象 mid2,然后输出 mid2。