从立方体、园柱体抽象出一个公共基类Container,定义抽象类Container,模拟实现一个容器类层次结构,在主西数进行多态机制测试。各派生类要求实现基类的所有纯虛函数。
时间: 2024-02-17 18:04:59 浏览: 83
好的,我可以给您提供一个示例代码,供您参考:
```c++
#include <iostream>
using namespace std;
// 容器的抽象基类
class Container {
public:
virtual double getVolume() const = 0; // 获取容积
virtual double getSurfaceArea() const = 0; // 获取表面积
};
// 立方体类
class Cube : public Container {
private:
double length_; // 立方体的边长
public:
Cube(double length) : length_(length) {}
double getVolume() const override { return length_ * length_ * length_; }
double getSurfaceArea() const override { return 6 * length_ * length_; }
};
// 圆柱体类
class Cylinder : public Container {
private:
double radius_; // 圆柱体的底面半径
double height_; // 圆柱体的高度
public:
Cylinder(double radius, double height) : radius_(radius), height_(height) {}
double getVolume() const override { return 3.14 * radius_ * radius_ * height_; }
double getSurfaceArea() const override { return 2 * 3.14 * radius_ * height_ + 2 * 3.14 * radius_ * radius_; }
};
// 主函数
int main() {
Container* containers[2];
containers[0] = new Cube(2);
containers[1] = new Cylinder(1, 3);
for (int i = 0; i < 2; i++) {
cout << "Container " << (i + 1) << " volume: " << containers[i]->getVolume() << endl;
cout << "Container " << (i + 1) << " surface area: " << containers[i]->getSurfaceArea() << endl;
}
return 0;
}
```
在这个示例代码中,我们定义了一个抽象基类`Container`,并且在其中定义了两个纯虚函数`getVolume()`和`getSurfaceArea()`。然后,我们又分别定义了一个派生类`Cube`和一个派生类`Cylinder`,并且在这两个派生类中都实现了基类的所有纯虚函数。最后,在主函数中,我们创建了一个`Container`类型的数组,并分别用`Cube`和`Cylinder`类的对象进行初始化。在循环中,我们遍历这个数组,并且调用每一个对象的`getVolume()`和`getSurfaceArea()`方法,以测试多态机制的正确性。
阅读全文