C++创建控制台应用程序圆形类Circle及其三个派生类Ball、Cylinder和Cone (在定义基类与派生类时,需要注意成员继承关系) (3)创建球体、圆柱体和圆锥体实例,并计算体积。在主方法中加入对应代码。
时间: 2024-11-09 22:20:07 浏览: 41
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
在C++中,我们可以首先定义一个基础类`Circle`,然后为需要形状各异但仍需共享共同特性的球形、圆柱体和圆锥体创建派生类。这里是一个简单的示例:
```cpp
// 基础类Circle
class Circle {
protected:
double radius; // 半径
public:
Circle(double r) : radius(r) {}
virtual double getVolume() const = 0; // 虚拟函数,用于计算体积
};
// 派生类Ball (球体)
class Ball : public Circle {
private:
double surfaceArea; // 表面积
public:
Ball(double r) : Circle(r), surfaceArea(4 * M_PI * pow(radius, 2)) {} // 球体表面积公式
double getVolume() const override { return 4 / 3 * M_PI * pow(radius, 3); } // 球体体积公式
};
// 派生类Cylinder (圆柱体)
class Cylinder : public Circle {
private:
double height; // 高度
public:
Cylinder(double r, double h) : Circle(r), height(h) {}
double getVolume() const override { return M_PI * pow(radius, 2) * height; } // 圆柱体体积公式
};
// 派生类Cone (圆锥体)
class Cone : public Circle {
private:
double height; // 高度
public:
Cone(double r, double h) : Circle(r), height(h) {}
double getVolume() const override { return 1 / 3 * M_PI * pow(radius, 2) * height; } // 圆锥体体积公式
};
int main() {
// 创建实例并计算体积
Circle* ballInstance = new Ball(5.0);
Circle* cylinderInstance = new Cylinder(3.0, 7.0);
Circle* coneInstance = new Cone(4.0, 9.0);
cout << "Ball volume: " << ballInstance->getVolume() << endl;
cout << "Cylinder volume: " << cylinderInstance->getVolume() << endl;
cout << "Cone volume: " << coneInstance->getVolume() << endl;
delete ballInstance;
delete cylinderInstance;
delete coneInstance; // 释放内存
return 0;
}
```
在这个例子中,我们定义了每个形状的构造函数,重写了`Circle`的虚函数`getVolume()`来计算各自的体积。在`main()`函数中,我们通过基类指针创建派生类对象,并调用它们的`getVolume()`方法来获取体积值。
阅读全文