使用虚函数编写程序求球体和圆柱体的体积和表面积。具体要求如下: (1)由于球体和圆柱体都可以看作由圆继承而来,所以可以定义圆类Circle为基类;在Circle类中定义求圆面积和体积的函数。 (2)由Circle类派生出球体Sphere类和圆柱体Column类,在派生类中重新定义求球体和圆柱体的表面积和体积的函数。 (3)为每个类添加构造函数和析构函数。 (4)在主函数中对球体和圆柱体类进行测试。
时间: 2024-02-21 12:01:48 浏览: 60
好的,我会根据你的要求为你提供这份程序。
```cpp
#include <iostream>
using namespace std;
const double PI = 3.14159265358979323846;
class Circle {
protected:
double r; // 半径
public:
Circle(double r = 0.0) : r(r) {}
virtual ~Circle() {}
virtual double getArea() const = 0; // 求面积
virtual double getVolume() const = 0; // 求体积
};
class Sphere : public Circle {
public:
Sphere(double r = 0.0) : Circle(r) {}
virtual ~Sphere() {}
virtual double getArea() const {
return 4 * PI * r * r;
}
virtual double getVolume() const {
return 4.0 / 3 * PI * r * r * r;
}
};
class Column : public Circle {
private:
double h; // 高
public:
Column(double r = 0.0, double h = 0.0) : Circle(r), h(h) {}
virtual ~Column() {}
virtual double getArea() const {
return 2 * PI * r * h + 2 * PI * r * r;
}
virtual double getVolume() const {
return PI * r * r * h;
}
};
int main() {
double r, h;
cout << "请输入球体半径:";
cin >> r;
Sphere s(r);
cout << "球体面积为:" << s.getArea() << endl;
cout << "球体体积为:" << s.getVolume() << endl;
cout << "请输入圆柱体半径和高:";
cin >> r >> h;
Column c(r, h);
cout << "圆柱体面积为:" << c.getArea() << endl;
cout << "圆柱体体积为:" << c.getVolume() << endl;
return 0;
}
```
希望这个程序能够满足你的需求。如果有任何问题,欢迎随时提出。
阅读全文