更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
使用虚函数编写程序,求球体和圆柱体的体积和表面积。要求:定义基类Shape,包含体积和表面积的虚函数;球类Sphere和圆柱体类Column继承Shape,重写虚函数完成计算和输出。 参考代码: #include<iostream> #include<cmath> using namespace std; const double PI = 3.14159; // 基类:形状 class Shape { public: // 纯虚函数:体积 virtual double getVolume() const = 0; // 纯虚函数:表面积 virtual double getSurfaceArea() const = 0; // 虚析构函数 virtual ~Shape() {} }; // 球类(继承Shape) class Sphere : public Shape { private: double radius; // 半径 public: Sphere(double r = 0) : radius(r) {} // 重写:体积(球体体积公式:$$4/3\pi r^3$$) double getVolume() const override { return (4.0 / 3) * PI * pow(radius, 3); } // 重写:表面积(球体表面积公式:$$4\pi r^2$$) double getSurfaceArea() const override { return 4 * PI * pow(radius, 2); } }; // 圆柱体类(继承Shape) class Column : public Shape { private: double radius; // 底面半径 double height; // 高 public: Column(double r = 0, double h = 0) : radius(r), height(h) {} // 重写:体积(圆柱体体积公式:$$\pi r^2 h$$) double getVolume() const override { return PI * pow(radius, 2) * height; } // 重写:表面积(圆柱体表面积公式:$$2\pi r^2 + 2\pi r h$$) double getSurfaceArea() const override { return 2 * PI * pow(radius, 2) + 2 * PI * radius * height; } }; // 测试函数:多态调用 void testShape(const Shape& shape) { cout << "体积:" << shape.getVolume() << endl; cout << "表面积:" << shape.getSurfaceArea() << endl; } // 测试代码 int main() { Sphere s(5); Column c(3, 4); cout << "球体参数:" << endl; testShape(s); cout << "\n圆柱体参数:" << endl; testShape(c); return 0; }