永发信息网

以点(point)类为基类,重新定义矩形类和圆类。

答案:2  悬赏:30  手机版
解决时间 2021-02-05 03:48
  • 提问者网友:缘字诀
  • 2021-02-04 19:25
以点(point)类为基类,重新定义矩形类和圆类。点为直角坐标点,矩形水平放置,由左下方的顶点和长宽定义。圆由圆心和半径定义。派生类操作判断任一坐标点是在图形内,还是在图形的边缘上,还是在图形外。缺省初始化图形退化为点。要求包括拷贝构造函数。编程测试类设计是否正确。
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-02-04 19:46
class point
{
int x;
int y;
}

class rectangle
{
point lb_point; //左下方的顶点
int length;
int height;
}

class circle
{
point center;
int r;
}

举例判断是在圆里面还是外面
int judge(point pt,circle cl)
{
int pt_x,pt_y,c_x,c_y;
double distance;
pt_x = pt.x;
pt_y = pt.y;
c_x = c.center.x;
c_y = c.center.y;
distance = (pt_x - c_x)*(pt_x - c_x) + (pt_y - c_y)*(pt_y - c_y);
if(r*r = distance)
return 0; //图形上
else (r*r > distance)
return -1; //图形里
else (r*r < distance)
return 1; //图形外

}
全部回答
  • 1楼网友:轻熟杀无赦
  • 2021-02-04 21:24
class cmypoint { public: cmypoint(void); ~cmypoint(void); virtual double getarea() = 0; //面积 virtual double getcircle() = 0;//周长 protected: int x; int y; }; class cmycircle:public cmypoint { public: cmycircle(int nradii) { m_nradii = nradii; } ~cmycircle(void); double getarea() { return 3.14159*m_nradii*m_nradii; } double getcircle() { return 2*3.14159*m_nradii; } private: int m_nradii; }; class cmyrectangle:public cmypoint { public: cmyrectangle(int nlength,int nwidth) { m_nlength = nlength; m_nwidth = nwidth; } ~cmyrectangle(void); double getarea() { return m_nwidth*m_nlength; } double getcircle() { return 2*(m_nlength+m_nwidth); } private: int m_nlength; int m_nwidth; }; 基类中定义一个纯虚函数 派生类里面分别实现具体的算法 你可以百度一下 虚函数的用法 就明白这样做的原理了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯