早教吧作业答案频道 -->其他-->
写一个程序,定义抽象基类shape,派生5个派生类虚函数(一)圆形、和长方形都可以看做是几何图形,定义一个基类shape,再派生出其他两个类。在各个类分别定义各自的计算面积函数area()
题目详情
写一个程序,定义抽象基类shape,派生5个派生类 虚函数
(一)圆形、和长方形都可以看做是几何图形,
定义一个基类shape,再派生出其他两个类。
在各个类分别定义各自的计算面积函数area(),
分别编写以shape对象和指针作为参数的
函数测试各自产生对象的不同面积()。
要求:
shape中没有数据成员;
circle中私有数据成员半径;
rectangle私有数据成员长和宽;
具有数据成员的类,要求编写相应的构造函数、
set和get函数。
(二)
再由圆形和长方形共同派生出圆柱体,
在圆柱体中定义计算圆柱体的面积area(),
通过圆柱体产生的对象观察各个构造函数的调用顺序。
(一)圆形、和长方形都可以看做是几何图形,
定义一个基类shape,再派生出其他两个类。
在各个类分别定义各自的计算面积函数area(),
分别编写以shape对象和指针作为参数的
函数测试各自产生对象的不同面积()。
要求:
shape中没有数据成员;
circle中私有数据成员半径;
rectangle私有数据成员长和宽;
具有数据成员的类,要求编写相应的构造函数、
set和get函数。
(二)
再由圆形和长方形共同派生出圆柱体,
在圆柱体中定义计算圆柱体的面积area(),
通过圆柱体产生的对象观察各个构造函数的调用顺序。
▼优质解答
答案和解析
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 #include
using namespace std;
const float PI = (float)3.14159;
class Shape{
public:
virtual float CalCircumference()=0;
virtual float CalArea()=0;
};
//圆形
class Roundness: public Shape{
public:
Roundness(float r):radius(r)
{}
virtual float CalCircumference()
{
return 2 * PI * radius;
}
virtual float CalArea()
{
return PI * radius * radius;
}
private:
float radius;
};
//正方形
class Square: public Shape{
public:
Square(float w):width(w)
{}
virtual float CalCircumference()
{
return 4 * width;
}
virtual float CalArea()
{
return width * width;
}
private:
float width;
};
//长方形
class Rectangle: public Shape{
public:
Rectangle(float w, float h):width(w), hight(h)
{}
virtual float CalCircumference()
{
return 2 * (width + hight);
}
virtual float CalArea()
{
return hight * width;
}
private:
float width;
float hight;
};
void main()
{
Shape* roud = new Roundness(3);
Shape* squ = new Square(3);
Shape* rang = new Rectangle(3, 4);
cout<CalCircumference()<CalArea()< cout<CalCircumference()<CalArea()< cout<CalCircumference()<CalArea()<
}
using namespace std;
const float PI = (float)3.14159;
class Shape{
public:
virtual float CalCircumference()=0;
virtual float CalArea()=0;
};
//圆形
class Roundness: public Shape{
public:
Roundness(float r):radius(r)
{}
virtual float CalCircumference()
{
return 2 * PI * radius;
}
virtual float CalArea()
{
return PI * radius * radius;
}
private:
float radius;
};
//正方形
class Square: public Shape{
public:
Square(float w):width(w)
{}
virtual float CalCircumference()
{
return 4 * width;
}
virtual float CalArea()
{
return width * width;
}
private:
float width;
};
//长方形
class Rectangle: public Shape{
public:
Rectangle(float w, float h):width(w), hight(h)
{}
virtual float CalCircumference()
{
return 2 * (width + hight);
}
virtual float CalArea()
{
return hight * width;
}
private:
float width;
float hight;
};
void main()
{
Shape* roud = new Roundness(3);
Shape* squ = new Square(3);
Shape* rang = new Rectangle(3, 4);
cout<CalCircumference()<CalArea()<
}
看了写一个程序,定义抽象基类sha...的网友还看了以下:
已知函数F(x)=Lnx,x属于[根号3e,e^3],函数g(x)=[F(x)]的平方-2a*f( 2020-06-06 …
一辆电动自行车铭牌上有如下的技术参数表:后轮驱动直流电动机蓄电池额定功率150W额定存储能量0.3 2020-06-27 …
抽象函数定积分问题将和式极限lim(n-->无穷)(1/n)[f(a+h/n)+f(a+2h/n) 2020-07-20 …
初二数学选择题在三角形ABC中,它底边为A,底边上的高为H,则三角形的面积S=1/2AH.若H为定 2020-07-31 …
1.语言的特点:意义性,语言中的每个词都有一定的含义,通过语言交际就是要把这种意义传达给他人.语言的 2020-11-02 …
“没有无义务的权利,也没有无权利的义务”,对这句话的理解正确的是()①权利和义务是完全对等的,二者不 2020-11-03 …
英国首都L、德国首都B、波兰首都H三城市所处纬度位置大致相当。据此回答1—3题。1、三地降水量按由大 2020-12-15 …
“是药三分毒”这句话的含义是()A.药物都具有百分之三十的毒性B.凡是药物都带有一定的毒性C.药物都 2020-12-22 …
关于satwe中角柱的定义satwe中特殊构件补充定义里的角柱定义,所有结构都需要定义么?规则结构可 2021-01-02 …
老师今天说“CH4是稳定化合物,所以2CH4=C2H2+3H2的ΔH一定为正值。”什么是稳定化合老师 2021-02-09 …