要求建立3个继承container的派生类cube、sphere与cylinder,让每一个派生类都包含虚函数surface_area()和volume(),分别用来计算正方体、球体和圆柱体的表面积及体积。要求写出主程序,应用C++的多态性,分别计算边
时间: 2024-03-06 13:47:15 浏览: 112
以下是符合您要求的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Container {
public:
virtual double surface_area() = 0;
virtual double volume() = 0;
};
class Cube : public Container {
private:
double length;
public:
Cube(double l) : length(l) {}
double surface_area() {
return 6 * length * length;
}
double volume() {
return length * length * length;
}
};
class Sphere : public Container {
private:
double radius;
public:
Sphere(double r) : radius(r) {}
double surface_area() {
return 4 * M_PI * radius * radius;
}
double volume() {
return 4.0 / 3.0 * M_PI * radius * radius * radius;
}
};
class Cylinder : public Container {
private:
double height;
double radius;
public:
Cylinder(double h, double r) : height(h), radius(r) {}
double surface_area() {
return 2 * M_PI * radius * height + 2 * M_PI * radius * radius;
}
double volume() {
return M_PI * radius * radius * height;
}
};
int main() {
Container* c[3];
c[0] = new Cube(2);
c[1] = new Sphere(3);
c[2] = new Cylinder(4, 2);
for (int i = 0; i < 3; i++) {
cout << "Container " << i+1 << " surface area: " << c[i]->surface_area() << endl;
cout << "Container " << i+1 << " volume: " << c[i]->volume() << endl << endl;
}
return 0;
}
```
在这个程序中,我们定义了一个 Container 类,并声明了两个纯虚函数 surface_area() 和 volume()。然后我们定义了三个派生类 Cube、Sphere 和 Cylinder,并分别实现了这两个纯虚函数。在主程序中,我们创建了一个 Container 类型的数组,并将三个派生类的对象存储在其中。然后我们使用 for 循环遍历数组,并分别调用每个对象的 surface_area() 和 volume() 函数,利用多态性来计算每个容器的表面积和体积。
阅读全文