课程设计---点类的设计与实现 1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用
时间: 2023-12-10 22:41:24 浏览: 224
编写一个程序,设计一个点类Point,求两个点之间的距离。
以下是设计与实现点类Point的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point{
private:
double x, y;
static int count; // 记录点的个数
public:
Point(double xx = 0, double yy = 0):x(xx),y(yy){
count++; // 新建一个点,计数器加1
}
void show(){
cout << "(" << x << ", " << y << ")" << endl;
}
static int getCount(){
return count;
}
friend double distance(const Point &p1, const Point &p2);
Point midpoint() const{
return Point(x/2, y/2);
}
};
int Point::count = 0;
double distance(const Point &p1, const Point &p2){
double dx = p1.x - p2.x;
double dy = p1.y - p2.y;
return sqrt(dx*dx + dy*dy);
}
int main(){
const Point p1(1, 2);
Point *p2 = new Point(3, 4);
Point &p3 = *p2;
cout << "p1: ";
p1.show();
cout << "p2: ";
p2->show();
cout << "p3: ";
p3.show();
cout << "count: " << Point::getCount() << endl;
cout << "distance(p1, p3): " << distance(p1, p3) << endl;
cout << "midpoint(p1): ";
p1.midpoint().show();
cout << "midpoint(p3): ";
p3.midpoint().show();
delete p2;
return 0;
}
```
代码中,我们定义了一个Point类,其中包含两个私有数据成员x和y,表示点的横纵坐标;一个静态数据成员count,用于记录点的个数。构造函数用于初始化点的坐标,并且在新建一个点时,计数器count加1。成员函数show用于输出点的坐标,静态成员函数getCount返回点的个数。友元函数distance用于计算两个点之间的距离,常函数midpoint用于计算点与原点之间的中点。在主函数中,我们定义了一个常对象p1,一个指向动态对象p2,一个引用p3,分别用于调用不同的成员函数。最后,我们在堆上分配的动态对象p2需要手动释放。
阅读全文