用C++定义一个基本形状类 Shape,该类有求表面积(GetSurface)和体积(GetVolume) 两个纯虚函数;由该类派生圆柱体(Cylinder),圆锥体(Cone),程序中通过基类指 针来调用派生类中的虚函数,计算出圆柱体、圆锥体的表面积和体积,并在 main() 中给出测试用例。
时间: 2023-08-21 15:04:25 浏览: 123
以下是用C++定义一个基本形状类 Shape,以及派生出圆柱体(Cylinder)和圆锥体(Cone)类的代码:
```c++
#include <iostream>
using namespace std;
class Shape{
public:
virtual double GetSurface() = 0; //求表面积
virtual double GetVolume() = 0; //求体积
};
class Cylinder: public Shape{
private:
double r; //底面半径
double h; //高度
public:
Cylinder(double r, double h): r(r), h(h){} //构造函数
double GetSurface(){ return 2 * 3.14 * r * r + 2 * 3.14 * r * h; } //计算表面积
double GetVolume(){ return 3.14 * r * r * h; } //计算体积
};
class Cone: public Shape{
private:
double r; //底面半径
double h; //高度
public:
Cone(double r, double h): r(r), h(h){} //构造函数
double GetSurface(){ return 3.14 * r * (r + sqrt(r * r + h * h)); } //计算表面积
double GetVolume(){ return 1.0/3 * 3.14 * r * r * h; } //计算体积
};
int main(){
Shape* p1 = new Cylinder(2, 5); //创建圆柱体对象
Shape* p2 = new Cone(3, 4); //创建圆锥体对象
cout << "Cylinder surface: " << p1->GetSurface() << endl;
cout << "Cylinder volume: " << p1->GetVolume() << endl;
cout << "Cone surface: " << p2->GetSurface() << endl;
cout << "Cone volume: " << p2->GetVolume() << endl;
delete p1; //释放内存
delete p2;
return 0;
}
```
在上述代码中,Shape类是基本形状类,其中定义了求表面积和体积的纯虚函数。Cylinder类和Cone类都是从Shape类派生而来的类,分别实现了求圆柱体和圆锥体表面积以及体积的函数。在main函数中,我们创建了圆柱体和圆锥体的对象,并通过基类指针来调用派生类中的虚函数,计算出了圆柱体和圆锥体的表面积和体积。
阅读全文