用c++定义一个Shape基类,并派生出圆球体(Sphere)和立方体(Cube),分别求圆球体与立方体对象的表面积和体积。
时间: 2023-12-03 18:45:45 浏览: 146
基类和派生类 面向对象程序设计 C++ 实验报告
以下是 C++ 的代码实现:
```cpp
#include <iostream>
using namespace std;
// Shape 基类
class Shape {
public:
virtual float getVolume() = 0; // 纯虚函数,获取体积
virtual float getSurfaceArea() = 0; // 纯虚函数,获取表面积
};
// Sphere 圆球体类,继承自 Shape 基类
class Sphere : public Shape {
private:
float radius; // 圆球体半径
public:
Sphere(float r) : radius(r) {} // 构造函数
float getVolume() { // 实现获取体积的纯虚函数
return (4.0 / 3.0) * 3.14159 * radius * radius * radius;
}
float getSurfaceArea() { // 实现获取表面积的纯虚函数
return 4.0 * 3.14159 * radius * radius;
}
};
// Cube 立方体类,继承自 Shape 基类
class Cube : public Shape {
private:
float sideLength; // 立方体边长
public:
Cube(float l) : sideLength(l) {} // 构造函数
float getVolume() { // 实现获取体积的纯虚函数
return sideLength * sideLength * sideLength;
}
float getSurfaceArea() { // 实现获取表面积的纯虚函数
return 6.0 * sideLength * sideLength;
}
};
int main() {
// 创建圆球体和立方体对象
Sphere sphere(2.0);
Cube cube(3.0);
// 输出圆球体的表面积和体积
cout << "Sphere surface area: " << sphere.getSurfaceArea() << endl;
cout << "Sphere volume: " << sphere.getVolume() << endl;
// 输出立方体的表面积和体积
cout << "Cube surface area: " << cube.getSurfaceArea() << endl;
cout << "Cube volume: " << cube.getVolume() << endl;
return 0;
}
```
输出结果:
```
Sphere surface area: 50.2654
Sphere volume: 33.5103
Cube surface area: 54
Cube volume: 27
```
阅读全文