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

建立一个point(点)类,包含数据成员x,y(坐标点)。以它为基类,以保护方式派生出一个circle(圆)类,增加数据成员r半径。再以circle类为直接基类,派生出一个cylinder(圆柱体)类,增加

题目详情
建立一个point ( 点 )类,包含数据成员x,y ( 坐标点 )。以它为基类,以保护方式派生出一个circle ( 圆 )类,增加数据成员 r 半径。再以circle 类为直接基类,派生出一个cylinder ( 圆柱体 )类,增加数据成员 h ( 高
▼优质解答
答案和解析
#include
using namespace std;
#define PI 3.1415926
class point
{
float x,y;
public:
point(float a,float b):x(a),y(b){}
};
class circle:protected point
{
float r;
public:
circle(float a,float b,float c):point(a,b),r(c){}
float area()
{
return (float)(r*r*PI);
}
float getr()
{
return r;
}
};
class cylinder:circle
{
float h;
public:
cylinder(float a,float b,float c,float d):circle(a,b,c),h(d){}
float area()
{
float ra=getr();
return (float)(2*ra*ra*PI+2*ra*PI*h);
}
float volume()
{
float ra=getr();
return (float)(ra*ra*PI*h);
}
};
int main()
{
cylinder cy(0,0,10,10);
printf("arae=%f volume=%f\n",cy.area() ,cy.volume() );
return 0;
}