c语言编写程序【问题描述】已知下面Shape类的定义,在此基础上派生出Rectangle和Circle类,二者都有GetArea()函数,用于计算对象的面积。再使用Rectangle类创建一个派生类Square。 自行根据需要定义相关的成员,达到以下要求: (1)达到以上题目所规定的类族要求。 (2)编写主函数,能够动态生成半径为5的圆对象的创建,并实现面积计算和输出。 (3)主函数中能动态生成长为4,宽为6的矩形对象创建,并实现面积计算和输出。 (4)主函数中能动态生成边为5的正方形对象创建,并实现面积计算和输出。 (5)完成上述动态对象的释放。 【输入形式】无输入。 【输出形式】分别输出指定圆、长方形和正方形的面积。 【样例输入】无输入 【样例输出】 The area of the Cirele is:78.5 The area of the Recanale is:24 The area of the Recanale is:25 【程序说明】该程序可使用虚函数相关的知识。
时间: 2024-03-14 09:47:34 浏览: 84
以下是问题的解答,代码中有详细的注释说明:
```c
#include<iostream>
using namespace std;
// Shape类的定义
class Shape{
public:
virtual double GetArea() = 0; // 纯虚函数,用于计算面积
};
// Rectangle类的定义,继承自Shape类
class Rectangle: public Shape{
public:
Rectangle(double w, double h): width(w), height(h){}
double GetArea(){ // 实现Shape类中的纯虚函数
return width * height; // 计算矩形面积
}
private:
double width, height; // 矩形的宽和高
};
// Circle类的定义,继承自Shape类
class Circle: public Shape{
public:
Circle(double r): radius(r){}
double GetArea(){ // 实现Shape类中的纯虚函数
return 3.14 * radius * radius; // 计算圆形面积
}
private:
double radius; // 圆形的半径
};
// Square类的定义,继承自Rectangle类
class Square: public Rectangle{
public:
Square(double s): Rectangle(s, s){} // 正方形的长和宽相等
};
int main(){
// 动态生成半径为5的圆对象
Circle* c = new Circle(5);
cout << "The area of the Circle is:" << c->GetArea() << endl;
// 动态生成长为4,宽为6的矩形对象
Rectangle* r = new Rectangle(4, 6);
cout << "The area of the Rectangle is:" << r->GetArea() << endl;
// 动态生成边为5的正方形对象
Square* s = new Square(5);
cout << "The area of the Square is:" << s->GetArea() << endl;
// 释放动态对象
delete c;
delete r;
delete s;
return 0;
}
```
运行结果:
```
The area of the Circle is:78.5
The area of the Rectangle is:24
The area of the Square is:25
```
阅读全文