(求帮助,初学)C++题目:把定义平面直角坐标系上的一个点的类…

把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect。要求成员函数能求出两点的距离、矩形的周长和面积等。... 把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect。要求成员函数能求出两点的距离、矩形的周长和面积等。我初学VC++谢谢 展开
 我来答
百度网友9b61c23
推荐于2018-05-04 · TA获得超过366个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:94.2万
展开全部
CLine 和 CPoint 不是 is_a 的关系,最好不要这样继承。
你可以写 CLine : pair<CPoint , CPoint> {}
对于矩形你可以写:CLine : pair<CPoint , CPoint> {}
写成 has_a 也是可以的,那就是这样 :
class CLine {
CPoint a , b ;
} ;
class CRect {
CPoint leftUp , rightDown ;
} ;
包含具体操作的并且使用继承并且符合is_a语义的代码如下:

#include <cmath>
#include <algorithm>
using namespace std ;
class CPoint {
public :
double x , y ;
} ;
class CLine : public pair<CPoint , CPoint> {
public :
double length() {
double dx = first.x - second.x ;
double dy = first.y - second.y ;
return sqrt(dx * dx + dy * dy) ;
}
} ;
class CRect : public pair<CPoint , CPoint> {
public :
double girth() {
double dx = first.x - second.x ;
double dy = first.y - second.y ;
return abs(dx) * 2.0 + abs(dy) * 2.0 ;
}
double area() {
double dx = first.x - second.x ;
double dy = first.y - second.y ;
return abs(dx) * abs(dy) ;
}
} ;

int main() {
return 0 ;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式