C++类与对象编程,第三题,才学,最好有注释,谢谢

如题所述

#include<iostream>
using namespace std;
class Point  //定义一个Point类表示平面上的一个点
{
private:
double x, y;   //点(x,y)的x,y属性
public:
Point(){}
Point(double x, double y)
{
this->x = x;
this->y = y;
}
double getX()    //返回x属性值
{
return x;
}
double getY()    //返回y属性值
{
return y;
}
double getDistance(Point i)   //计算两点之间的距离
{
double x1 = x - i.x;
double y1 = y - i.y;
double d = sqrt(x1*x1 + y1*y1);
return d;
}
};
class Rectangle    //定义该类表示平面上的矩形
{
private:
Point a1, a2, a3, a4;  //a1,a2,a3,a4为矩形四个顶点坐标
public:
Rectangle(){}
Rectangle(Point a1, Point a2, Point a3, Point a4)
{
this->a1 = a1;
this->a2 = a2;
this->a3 = a3;
this->a4 = a4;
}
double getS()      //计算矩形面积
{
double r = a1.getDistance(a2); //点a1到点a2的距离 
double l = a2.getDistance(a3); //点a2到点a3的距离
double s = r*l;
return s;
}
};
int main()
{
cout << "开始测试!" << endl;
cout << "(矩形顶点从左到右,从上到下输入)" << endl;
double X[4], Y[4];
for (int i = 0; i < 4 ; i++)
{
cout << "顶点横坐标为:";
cin >> X[i];
cout << "顶点纵坐标为:";
cin >> Y[i];
cout << endl;
}
Point A1(X[0], Y[0]), A2(X[1], Y[1]), A3(X[2], Y[2]), A4(X[3], Y[3]);
Rectangle   rec(A1, A2, A3, A4);
double S = rec.getS();
cout << "该矩形的面积为:" << S << endl;
system("pause");
return 0;
}

这段代码写的不是很严谨,修改建议用运算符重载,加上判断是否能构成矩形,顶点坐标是否非法等等。

追问

public:
Point(){}
Point(double x, double y)
{
this->x = x;
this->y = y;
}请问为什么要有两个构造函数,我的理解是可以把第一个构造函数去掉,去掉后有错,有点像不同,再次请教您,谢谢

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答