用c++写一个程序,定义抽象基类Container,由它派生出3个派生类:Sphere(球体)、Cylinder(圆柱体)、Cube(正方体)。用虚函数分别计算几种图形的表面积和体积。
时间: 2024-03-25 14:37:30 浏览: 93
好的,我来给你提供一个示例代码,帮助你实现这个程序。
```c++
#include <iostream>
using namespace std;
const double pi = 3.1415926;
class Container {
public:
virtual double getVolume() = 0;
virtual double getSurfaceArea() = 0;
};
class Sphere : public Container {
private:
double radius;
public:
Sphere(double r) {
radius = r;
}
double getVolume() {
return 4.0 / 3.0 * pi * radius * radius * radius;
}
double getSurfaceArea() {
return 4.0 * pi * radius * radius;
}
};
class Cylinder : public Container {
private:
double radius;
double height;
public:
Cylinder(double r, double h) {
radius = r;
height = h;
}
double getVolume() {
return pi * radius * radius * height;
}
double getSurfaceArea() {
return 2.0 * pi * radius * height + 2.0 * pi * radius * radius;
}
};
class Cube : public Container {
private:
double length;
public:
Cube(double l) {
length = l;
}
double getVolume() {
return length * length * length;
}
double getSurfaceArea() {
return 6.0 * length * length;
}
};
int main() {
Container* p[3];
p[0] = new Sphere(3.0);
p[1] = new Cylinder(2.0, 5.0);
p[2] = new Cube(4.0);
for (int i = 0; i < 3; i++) {
cout << "Container " << i+1 << ":" << endl;
cout << "Volume: " << p[i]->getVolume() << endl;
cout << "Surface Area: " << p[i]->getSurfaceArea() << endl;
cout << endl;
delete p[i];
}
return 0;
}
```
在上面的示例中,我们首先定义了一个抽象基类`Container`,其中包含了两个纯虚函数`getVolume`和`getSurfaceArea`。然后,我们又定义了三个派生类`Sphere`、`Cylinder`和`Cube`,分别表示球体、圆柱体和正方体,并重写了基类中的两个纯虚函数。
在主函数中,我们创建了一个指针数组`p`,其中存储了三个容器类型的对象。然后,我们分别使用`new`关键字创建了三个不同的派生类对象,并将它们保存到指针数组`p`中。最后,我们使用循环遍历指针数组,依次调用每个对象的`getVolume`和`getSurfaceArea`函数,并输出结果。
希望这个示例代码可以帮助你理解如何使用C++实现抽象基类和派生类,并重写虚函数计算各种图形的表面积和体积。
阅读全文