一、实验目的:通过类的设计与实现,将所学知识点综合应用。 1.类的设计与定义,构造函数等。 2.静态成员,友元,常引用等 二、实验要求: 1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用 测试该类,运行成功。 点类Point的设计图如下: Point int x; int y; static int count=0; //统计点的个数 Point(int x =0,int y=0); int getX(); //得到x int getY(); //得到y void display(); //输出x,y Point midpoint(int x,int y) const;//两点举例 static void showCount(); //输出个数 friend double distance();//求出点到原点的距离
时间: 2024-03-03 12:53:11 浏览: 83
以下是符合要求的程序:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
int x;
int y;
static int count; // 统计点的个数
public:
Point(int x = 0, int y = 0) {
this->x = x;
this->y = y;
count++;
}
int getX() {
return x;
}
int getY() {
return y;
}
void display() {
cout << "x: " << x << ", y: " << y << endl;
}
Point midpoint(int x, int y) const {
int midX = (this->x + x) / 2;
int midY = (this->y + y) / 2;
return Point(midX, midY);
}
static void showCount() {
cout << "The count of points is: " << count << endl;
}
friend double distance(Point p); // 求出点到原点的距离
};
int Point::count = 0;
double distance(Point p) {
return sqrt(pow(p.x, 2) + pow(p.y, 2));
}
int main() {
Point p1(1, 2);
Point p2(3, 4);
Point::showCount(); // 输出点的个数
p1.display(); // 输出点的坐标
p2.display();
cout << "The distance between p1 and origin is: " << distance(p1) << endl; // 输出点到原点的距离
Point mid = p1.midpoint(3, 4); // 计算点与原点之间的中点
mid.display();
const Point* p = &p2; // 常指针
p->getX(); // 用常指针调用getX函数
p->getY(); // 用常指针调用getY函数
p->midpoint(5, 6); // 用常指针调用midpoint函数,因为midpoint函数是常函数,所以可以用常指针调用
//p->display(); // 错误,display函数不是常函数,不能用常指针调用
return 0;
}
```
阅读全文