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

写一个程序,定义抽象基类shape,派生5个派生类虚函数(一)圆形、和长方形都可以看做是几何图形,定义一个基类shape,再派生出其他两个类。在各个类分别定义各自的计算面积函数area()

题目详情
写一个程序,定义抽象基类shape,派生5个派生类 虚函数
(一)圆形、和长方形都可以看做是几何图形,
定义一个基类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()<
}
看了写一个程序,定义抽象基类sha...的网友还看了以下: