以点(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; //图形外
}
{
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;
};
基类中定义一个纯虚函数 派生类里面分别实现具体的算法
你可以百度一下 虚函数的用法 就明白这样做的原理了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯