在形状类Shape的基础之上,编写两个派生类长方类Rectangle和圆类Circle,对基类Shape类中的 Area()纯虚函数重新实现,长方的面积是长乘宽,圆的面积是PI半径平方,在主函数中种类随机地创建100个形状,计算这100个形状面积的和。
时间: 2024-03-10 21:45:57 浏览: 44
矩形类及派生类,算面积、体积
好的,根据您的要求,我来为您编写代码:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
const double PI = 3.14159;
class Shape {
public:
virtual double Area() = 0;
};
class Rectangle : public Shape {
public:
Rectangle(double l = 0, double w = 0) : length(l), width(w) {}
virtual double Area() {
return length * width;
}
private:
double length, width;
};
class Circle : public Shape {
public:
Circle(double r = 0) : radius(r) {}
virtual double Area() {
return PI * radius * radius;
}
private:
double radius;
};
int main() {
srand(time(NULL)); // 设置随机数种子
Shape* shapes[100]; // 定义指针数组
double sumArea = 0; // 总面积
for (int i = 0; i < 100; i++) {
int choice = rand() % 2 + 1; // 随机选择形状
switch (choice) {
case 1: // 长方形
shapes[i] = new Rectangle(rand() % 10 + 1, rand() % 10 + 1);
break;
case 2: // 圆形
shapes[i] = new Circle(rand() % 10 + 1);
break;
}
sumArea += shapes[i]->Area(); // 计算总面积
}
cout << "100个形状的总面积是:" << sumArea << endl;
return 0;
}
```
这里使用了指针数组来存储随机创建的100个形状,通过循环计算每个形状的面积并累加到总面积中。注意,我们在基类Shape中将Area()声明为了纯虚函数,这样就可以在派生类中重新实现该函数,实现多态性。
阅读全文