编写程序,定义抽象基类 Shape(形状),由它派生出 2 个派生类: Circle(圆形)和 Square (正方形),用函数 ShowArea()分别显示各种图形的面积,要求用基类指针数组,数组的每个 元素指向一个派生类对象。
时间: 2024-03-14 22:46:47 浏览: 63
好的,我可以为您提供一个 C++ 的示例程序:
```cpp
#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 Square : public Shape {
private:
double side;
public:
Square(double s) : side(s) {}
double getArea() { return side * side; }
};
int main() {
Shape* shapes[2]; // 定义基类指针数组
shapes[0] = new Circle(5); // 指向 Circle 对象
shapes[1] = new Square(4); // 指向 Square 对象
for (int i = 0; i < 2; i++) {
cout << "Area of shape " << i+1 << ": " << shapes[i]->getArea() << endl;
delete shapes[i]; // 释放内存
}
return 0;
}
```
运行结果如下:
```
Area of shape 1: 78.5
Area of shape 2: 16
```
在这个示例程序中,`Shape` 是一个抽象基类,它只包含一个纯虚函数 `getArea()`,用于计算面积。`Circle` 和 `Square` 分别继承于 `Shape`,并实现了自己的 `getArea()` 函数。在 `main()` 函数中,定义了一个 `Shape` 的指针数组 `shapes`,并将其元素分别指向一个 `Circle` 对象和一个 `Square` 对象。然后,使用基类指针调用各自的 `getArea()` 函数,计算并显示各种图形的面积。最后,释放内存以避免内存泄漏。
阅读全文