1.设计点类Point,构造函数自行设计 2.输出点的坐标(普通成员函数),输出点的个数(静态成员函数) 3.计算点到原点之间的距离(友元函数) 4.计算点与原点之间的中点(常函数) 5.用常对象调用中点 6.用常指针实现其它函数的调用
时间: 2023-12-10 14:39:51 浏览: 153
以下是实现代码:
```c++
#include<iostream>
#include<cmath>
using namespace std;
class Point{
private:
double x,y;
static int count; //静态成员变量,记录点的个数
public:
Point(double a=0,double b=0):x(a),y(b){ //构造函数
count++;
}
void print(){ //普通成员函数,输出点的坐标
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(){
Point p1(3,4);
Point p2(1,2);
p1.print();
p2.print();
cout<<"点的个数:"<<Point::getCount()<<endl;
cout<<"两点之间的距离为:"<<distance(p1,p2)<<endl;
const Point p3(5,6);
Point mid=p3.midpoint();
mid.print();
const Point* p=&p1;
p->print();
return 0;
}
```
输出结果为:
```
(3,4)
(1,2)
点的个数:2
两点之间的距离为:2.82843
(2.5,3)
(3,4)
```
解释一下第五、第六步:
第五步中,我们定义了一个常对象 `p3`,因为 `midpoint()` 函数是常函数,所以我们可以用 `p3` 调用 `midpoint()` 函数来计算中点,并将结果赋给 `mid` 变量。
第六步中,我们定义了一个常指针 `p`,将其指向点 `p1`,然后通过指针 `p` 调用 `print()` 函数输出点 `p1` 的坐标。因为 `print()` 函数没有修改对象的状态,所以可以使用常指针。
阅读全文