使用虚函数编写程序求球体和圆柱体的体积及表面积
一、需求分析
本程序需要计算球体和圆柱体的体积及表面积,因此需要设计两个类:Sphere(球体)和Cylinder(圆柱体)。由于计算公式不同,因此需要分别实现虚函数volume()和surfaceArea()。
二、设计思路
1. 设计类
根据需求分析,我们需要设计两个类:Sphere(球体)和Cylinder(圆柱体)。这两个类都是三维图形,因此可以定义一个基类Shape来作为它们的父类。
2. 定义虚函数
由于计算球体和圆柱体的体积及表面积的公式不同,因此需要在Shape基类中定义虚函数volume()和surfaceArea()。在子类中重写这两个函数以实现各自的功能。
母亲节快乐英文
3. 输入参数
为了方便用户输入数据,我们可以在每个子类中定义一个构造函数来获取用户输入的半径或高度等数据。同时,也可以在每个子类中定义一个析构函数来释放内存。
4. 输出结果
在main函数中调用Sphere和Cylinder对象的volume()和surfaceArea()方法,并输出结果即可。
三、代码实现
1. Shape基类定义
```c++
class Shape {
public:
漫画学习班
口语翻译 virtual double volume() = 0; // 计算体积
virtual double surfaceArea() = 0; // 计算表面积
crab
};
```
2. Sphere子类定义
```c++
class Sphere : public Shape {
public:
Sphere(double r) : radius(r) {} // 构造函数
~Sphere() {} // 析构函数
double volume() { return 4.0 / 3.0 * PI * pow(radius, 3); } // 计算体积
double surfaceArea() { return 4 * PI * pow(radius, 2); } // 计算表面积
嗤之以鼻什么意思private:
double radius; // 球体半径
};
vsi
```
3. Cylinder子类定义
```c++
class Cylinder : public Shape {
public:
Cylinder(double r, double h) : radius(r), height(h) {} // 构造函数
~Cylinder() {} // 析构函数
授权书英语
double volume() { return PI * pow(radius, 2) * height; } // 计算体积
double surfaceArea() { return 2 * PI * radius * (radius + height); } // 计算表面积
private:
double radius; // 圆柱体底面半径
double height; // 圆柱体高度
};
changes```
四、完整代码
```c++
#include <iostream>
#include <cmath>
using namespace std;
const double PI = acos(-1.0);
// 基类Shape,包含虚函数volume和surfaceArea,分别用于计算体积和表面积。
class Shape {
public:
virtual double volume() = 0;
virtual double surfaceArea() = 0;
};
// 子类Sphere,表示球体。
class Sphere : public Shape {
public:
Sphere(double r) : radius(r) {}
~Sphere() {}
double volume() { return 4.0 / 3.0 * PI * pow(radius, 3); }
double surfaceArea() { return 4 * PI * pow(radius, 2); }
private:
double radius;
};
// 子类Cylinder,表示圆柱体。
class Cylinder : public Shape {
public:
Cylinder(double r, double h) : radius(r), height(h) {}
~Cylinder() {}
double volume() { return PI * pow(radius, 2) * height; }
double surfaceArea() { return 2 * PI * radius * (radius + height); }
private:
double radius;
double height;
英语教师培训心得
};
int main()
{
// 计算球体的体积和表面积
Sphere sphere(5);
cout << "Sphere: " << endl;
cout << "Volume = " << sphere.volume() << endl;
cout << "Surface Area = " << sphere.surfaceArea() << endl;
// 计算圆柱体的体积和表面积
Cylinder cylinder(3, 10);
cout << "Cylinder: " << endl;
减少的英文 cout << "Volume = " << cylinder.volume() << endl;
cout << "Surface Area = " << cylinder.surfaceArea() << endl;
return 0;