早教吧作业答案频道 -->其他-->
初学)C++题目:把定义平面直角坐标系上的一个点的类…把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect.要求成员函数能求出两点
题目详情
初学)C++题目:把定义平面直角坐标系上的一个点的类…
把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect.要求成员函数能求出两点的距离、矩形的周长和面积等.我初学VC++谢谢
把定义平面直角坐标系上的一个点的类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 ;
}
你可以写 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 ;
}
看了 初学)C++题目:把定义平面...的网友还看了以下:
很多很多道应用题.呜呜.麻烦大家了.1.某此考试共出100道判断题,没题1分,分为A、B、C三类, 2020-04-27 …
三种不同类型的矩形地砖长宽如图所示有A砖4块,B类4块,C类2块 要拼成一个正方形,则应多余出1块 2020-05-13 …
空间直线能否用三元方程表示既然两点确定一条直线,那么已知空间中的两个点,可不可以求出一个类似于平面 2020-07-21 …
戈登提出四种类比方法。多项选择:a、拟人类比b、直接类比c、象征类比d、复合类比e、幻想类比 2020-07-30 …
/*1.定义点Point类作为基类,在此基础上派生出直线Line类和圆Circle类,在Circle 2020-11-02 …
掀开“巫山人”神秘的面纱①一直以来,东非大裂谷古人类化石的发现,使得西方学者得出了“人类起源于非洲, 2020-11-20 …
c++复习题424.C++中的虚基类机制可以保证:()。A.限定基类只通过一条路径派生出派生类B.允 2020-11-22 …
在研究光的直线传播时,用一条带箭头的直线表示光的传播路径和方向,既简单又明了,在物理学中把这种研究问 2020-11-26 …
给出下面类比推理命题(Q为有理数集,R为实数集,C为复数集):①“若a,b∈R,则a-b=0⇒a=b 2020-11-29 …
给出下面类比推理命题(其中Q为有理数集,R为实数集,C为复数集)①“若a,b∈R,则a-b=0⇒a= 2020-11-29 …