写一个程序,定义抽象基类shape,派生5个派生类 虚函数

(一)圆形、和长方形都可以看做是几何图形,
定义一个基类shape,再派生出其他两个类。
在各个类分别定义各自的计算面积函数area(),
分别编写以shape对象和指针作为参数的
函数测试各自产生对象的不同面积()。
要求:
shape中没有数据成员;
circle中私有数据成员半径;
rectangle私有数据成员长和宽;
具有数据成员的类,要求编写相应的构造函数、
set和get函数。
(二)
再由圆形和长方形共同派生出圆柱体,
在圆柱体中定义计算圆柱体的面积area(),
通过圆柱体产生的对象观察各个构造函数的调用顺序。

第1个回答  推荐于2016-09-06
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 <iostream>
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<<"圆形的周长:"<<roud->CalCircumference()<<" 面积:"<<roud->CalArea()<<endl;
cout<<"正方形的周长:"<<squ->CalCircumference()<<" 面积:"<<squ->CalArea()<<endl;
cout<<"长方形的周长:"<<rang->CalCircumference()<<" 面积:"<<rang->CalArea()<<endl;

}本回答被提问者和网友采纳
第2个回答  2021-04-17

本视频主要从Java语言基础、JavaSE核心、WEB全栈及数据库、Servlet/Jsp核心、 Java框架五个阶段进行讲解。在本教程中,会让大家从零基础快速掌握Java知识。想要配套学习资料的小伙伴可以联系我哦!

相似回答