用C++编写一个程序:基类:圆类,包含数据半径和成员方法构造函数、析构函数、求面积和周长函数、打印输出函数;圆柱体类是圆类的公有派生类,新增私有数据圆柱高、带参构造函数、析构函数、计算表面积函数、体积函数、打印输出函数,在主函数中进行测试。
时间: 2024-01-08 17:03:44 浏览: 89
调用基类的构造函数-C++程序设计 谭浩强
好的,以下是您需要的程序代码:
```c++
#include <iostream>
using namespace std;
const double PI = 3.1415926535;
class Circle {
protected:
double radius;
public:
Circle(double r = 0) : radius(r) {}
virtual ~Circle() {}
double getArea() const { return PI * radius * radius; }
double getPerimeter() const { return 2 * PI * radius; }
virtual void print() const {
cout << "Circle: radius = " << radius << ", area = " << getArea() << ", perimeter = " << getPerimeter() << endl;
}
};
class Cylinder : public Circle {
private:
double height;
public:
Cylinder(double r = 0, double h = 0) : Circle(r), height(h) {}
~Cylinder() {}
double getSurfaceArea() const { return 2 * getArea() + 2 * PI * radius * height; }
double getVolume() const { return getArea() * height; }
void print() const override {
cout << "Cylinder: radius = " << radius << ", height = " << height << ", surface area = " << getSurfaceArea()
<< ", volume = " << getVolume() << endl;
}
};
int main() {
Circle c(3);
c.print();
Cylinder cy(3, 4);
cy.print();
Circle* p = &cy;
p->print();
return 0;
}
```
程序定义了圆类 `Circle` 和圆柱体类 `Cylinder`,其中圆柱体类是圆类的公有派生类,即圆柱体类继承了圆类的所有成员(包括数据和方法),并新增了私有数据 `height`,以及计算表面积和体积的方法。
在主函数中,我们创建了一个圆对象 `c` 和一个圆柱体对象 `cy`,并通过调用它们的 `print` 方法输出它们的信息。此外,我们还定义了一个指向圆柱体对象的基类指针 `p`,通过该指针调用 `print` 方法,实现了多态性。
程序输出如下:
```
Circle: radius = 3, area = 28.2743, perimeter = 18.8496
Cylinder: radius = 3, height = 4, surface area = 131.946, volume = 113.097
Cylinder: radius = 3, height = 4, surface area = 131.946, volume = 113.097
```
可以看到,程序正确计算了圆和圆柱体的面积、周长、体积和表面积,并且通过多态性实现了基类指针调用派生类方法的效果。
阅读全文