早教吧 育儿知识 作业答案 考试题库 百科 知识分享

初学)C++题目:把定义平面直角坐标系上的一个点的类…把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect.要求成员函数能求出两点

题目详情
初学)C++题目:把定义平面直角坐标系上的一个点的类…
把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect.要求成员函数能求出两点的距离、矩形的周长和面积等.我初学VC++谢谢
▼优质解答
答案和解析
CLine 和 CPoint 不是 is_a 的关系,最好不要这样继承.
你可以写 CLine :pair {}
对于矩形你可以写:CLine :pair {}
写成 has_a 也是可以的,那就是这样 :
class CLine {
CPoint a ,b ;
} ;
class CRect {
CPoint leftUp ,rightDown ;
} ;
包含具体操作的并且使用继承并且符合is_a语义的代码如下:
#include
#include
using namespace std ;
class CPoint {
public :
\x09double x ,y ;
} ;
class CLine :public pair {
public :
\x09double length() {
\x09\x09double dx = first.x - second.x ;
\x09\x09double dy = first.y - second.y ;
\x09\x09return sqrt(dx * dx + dy * dy) ;
\x09}
} ;
class CRect :public pair {
public :
\x09double girth() {
\x09\x09double dx = first.x - second.x ;
\x09\x09double dy = first.y - second.y ;
\x09\x09return abs(dx) * 2.0 + abs(dy) * 2.0 ;
\x09}
\x09double area() {
\x09\x09double dx = first.x - second.x ;
\x09\x09double dy = first.y - second.y ;
\x09\x09return abs(dx) * abs(dy) ;
\x09}
} ;
int main() {
return 0 ;
}