(求帮助,初学)C++题目:把定义平面直角坐标系上的一个点的类…
把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect。要求成员函数能求出两点的距离、矩形的周长和面积等。...
把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect。要求成员函数能求出两点的距离、矩形的周长和面积等。我初学VC++谢谢
展开
1个回答
展开全部
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 ;
}
你可以写 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 ;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询