c++设计一个图形基类,派生出圆形类和矩形类等图像类,并且设计一个函数可以计算所有图像的面积
时间: 2024-02-20 13:57:25 浏览: 114
好的,根据您的要求,我可以为您提供以下的 C++ 代码:
```c++
#include <iostream>
using namespace std;
class Shape {
public:
virtual double getArea() = 0; // 纯虚函数,获取图形面积
};
class Circle : public Shape {
private:
double radius; // 圆形半径
public:
Circle(double r) { radius = r; }
double getArea() { return 3.14 * radius * radius; } // 圆形面积公式
};
class Rectangle : public Shape {
private:
double length; // 矩形长
double width; // 矩形宽
public:
Rectangle(double l, double w) { length = l; width = w; }
double getArea() { return length * width; } // 矩形面积公式
};
int main() {
Shape* shapes[2]; // 定义 Shape 指针数组
shapes[0] = new Circle(3); // 创建 Circle 对象并赋值给 shapes[0]
shapes[1] = new Rectangle(4, 5); // 创建 Rectangle 对象并赋值给 shapes[1]
double totalArea = 0;
for (int i = 0; i < 2; i++) {
totalArea += shapes[i]->getArea(); // 调用 getArea() 函数计算面积
}
cout << "Total area = " << totalArea << endl; // 输出总面积
// 释放内存
delete shapes[0];
delete shapes[1];
return 0;
}
```
以上代码中,`Shape` 是一个抽象类,没有具体实现,只有一个纯虚函数 `getArea()` 用于获取图形面积。`Circle` 类和 `Rectangle` 类分别继承自 `Shape` 类,并实现了 `getArea()` 函数。在 `main()` 函数中创建了一个 `Shape` 指针数组,用于存储不同类型的图形对象,并计算它们的总面积。最后释放内存。
阅读全文