定义一个抽象的几何图形类Shape,它有一个虚函数成员getArea(),返回图形的面积(默认返回0)。 由Shape类派生出一下几类:矩形类Rectangle,圆形类Circle,需要重新实现getArea()函数,使之返回正确的计算结果。 输入 输入1个整数,代表几何图形的类型。如果为1,则输入两个双精度浮点数分别为矩形的长和宽;如果为2,则输入一个双精度浮点数为圆形的半径。例如: 1 5.2 6.8 输出 输出该几何图形的面积,结果保留两位小数。例如: 35.36
时间: 2024-02-27 14:59:20 浏览: 62
好的,这里是代码实现:
```c++
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
class Shape {
public:
virtual double getArea() { return 0; }
};
class Rectangle : public Shape {
private:
double length;
double width;
public:
Rectangle(double l, double w) : length(l), width(w) {}
double getArea() { return length * width; }
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() { return M_PI * radius * radius; }
};
int main() {
int type;
cin >> type;
Shape *shape = nullptr;
if (type == 1) {
double l, w;
cin >> l >> w;
shape = new Rectangle(l, w);
}
else if (type == 2) {
double r;
cin >> r;
shape = new Circle(r);
}
if (shape != nullptr) {
cout << fixed << setprecision(2) << shape->getArea() << endl;
delete shape;
}
return 0;
}
```
首先定义了一个抽象类 Shape,其中包含一个虚函数 getArea(),其返回值默认为0,代表没有面积。
然后从 Shape 类派生出了 Rectangle 和 Circle 类,它们分别重写了 getArea() 函数,计算出对应几何图形的面积。
最后在 main() 函数中,根据输入的几何图形类型选择创建 Rectangle 或 Circle 对象,然后调用它们的 getArea() 函数计算面积并输出。由于 Shape 是抽象类,不能创建 Shape 对象,所以用 Shape 指针指向 Rectangle 或 Circle 对象,实现多态。注意在结束程序前需要 delete 掉申请的内存。
阅读全文