06-构造与析构-
题目描述
上面是我们曾经练习过的一个习题,请在原来代码的基础上作以下修改:1、增加自写的拷贝构造函数;2、增加自写的析构函数;3、将getDisTo方法的参数修改为getDisTo(const Point &p);4、根据下面输出的内容修改相应的构造函数。
然后在主函数中根据用户输入的数目建立Point数组,求出数组内距离最大的两个点之间的距离值。
输入
测试数据的组数 t
第一组点的个数
第一个点的 x 坐标 y坐标
第二个点的 x坐标 y坐标
…
输出
输出第一组距离最大的两个点以及其距离
…
在C++中,输出指定精度的参考代码如下:
#include < iostream>
#include < iomanip> //必须包含这个头文件
using namespace std;
void main( )
{ double a =3.141596;
cout<<fixed<<setprecision(3)<<a<<endl; //输出小数点后3位
输入样例
2
4
0 0
5 0
5 5
2 10
3
-1 -8
0 9
5 0
Constructor.
Constructor.
Constructor.
Constructor.
The longeset distance is 10.44,between p[1] and p[3].
Distructor.
Distructor.
Distructor.
Distructor.
Constructor.
Constructor.
Constructor.
The longeset distance is 17.03,between p[0] and p[1].
Distructor.
Distructor.
Distructor.
1.关于const point &p
—如果使用(point p),由于传参时会调用默认拷贝构造函数,在主函数的冒泡排序时会共调用n!次默认构造函数,因此在析构时会多出(n+1)*n/2次
—使用const防止改变值
2.在函数里可以直接使用p.x、p.y,在主函数需要p.getx()、 p.gety()
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class point
{
double x,y;
public: