使用c++ 在形状类Shape的基础之上,编写两个派生类长方类Rectangle和圆类Circle,对基类Shape类中的Area( )纯虚函数重新实现,长方的面积是长乘宽,圆的面积是π半径平方,在主函数中种类随机地创建100个形状,计算这100个形状面积的和
时间: 2024-03-10 17:46:11 浏览: 146
好的,以下是一个实现您要求的C++代码:
```c++
#include <iostream>
#include <cmath>
#include <ctime>
using namespace std;
class Shape {
public:
virtual double area() = 0; // 纯虚函数
};
class Rectangle : public Shape {
private:
double length;
double width;
public:
Rectangle(double l, double w) {
length = l;
width = w;
}
double area() {
return length * width;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) {
radius = r;
}
double area() {
return M_PI * pow(radius, 2);
}
};
int main() {
srand(time(NULL)); // 设置随机数种子
Shape *shapes[100];
double total_area = 0;
for (int i = 0; i < 100; i++) {
int shape_type = rand() % 2 + 1;
if (shape_type == 1) {
// 随机创建长方形
double length = rand() % 10 + 1;
double width = rand() % 10 + 1;
shapes[i] = new Rectangle(length, width);
} else {
// 随机创建圆形
double radius = rand() % 10 + 1;
shapes[i] = new Circle(radius);
}
total_area += shapes[i]->area();
}
cout << "100个形状的总面积为:" << total_area << endl;
// 释放内存
for (int i = 0; i < 100; i++) {
delete shapes[i];
}
return 0;
}
```
在这个代码中,我们定义了一个基类 `Shape`,其中有一个纯虚函数 `area()`。我们还定义了两个派生类 `Rectangle` 和 `Circle`。这两个类都重写了基类的 `area()` 方法以计算它们各自的面积。在主函数中,我们随机创建了100个形状,并计算它们的总面积。我们还使用了动态内存分配来创建形状对象,最后释放内存以避免内存泄漏。
阅读全文