用C++编写一个多级继承 的程序 要求基类Point派生出一个Circle(圆)类,Circle(圆)类再派生出一个Cylinder(圆柱体)类。 基类Point的有数据成员x,y,若干成员函数用于对数据成的操作; Circle(圆)类增加数据成员r(半径),以及求面积的成员函数area,和若干需要的成员函数; Cylinder(圆柱体)类,再增加数据成员h(高),以及求圆柱表面积的成员函数area和求圆柱体积的成员函数volume,及若干需要的成员函数; 每个类都有若干构造函数及析构函数。设计main函数完成测试。
时间: 2023-06-19 16:05:52 浏览: 91
好的,我来回答您的问题。
以下是该程序的代码:
```
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y;
public:
Point(double xx = 0, double yy = 0) {
x = xx;
y = yy;
}
~Point() {}
double getX() {
return x;
}
double getY() {
return y;
}
};
class Circle : public Point {
private:
double r;
public:
Circle(double xx = 0, double yy = 0, double rr = 0) : Point(xx, yy) {
r = rr;
}
~Circle() {}
double getR() {
return r;
}
double area() {
return M_PI * r * r;
}
};
class Cylinder : public Circle {
private:
double h;
public:
Cylinder(double xx = 0, double yy = 0, double rr = 0, double hh = 0) : Circle(xx, yy, rr) {
h = hh;
}
~Cylinder() {}
double getH() {
return h;
}
double area() {
return 2 * M_PI * getR() * h + 2 * Circle::area();
}
double volume() {
return Circle::area() * h;
}
};
int main() {
Cylinder c(1, 2, 3, 4);
cout << "The radius of the circle is " << c.getR() << endl;
cout << "The height of the cylinder is " << c.getH() << endl;
cout << "The area of the cylinder is " << c.area() << endl;
cout << "The volume of the cylinder is " << c.volume() << endl;
return 0;
}
```
这段代码定义了三个类:Point、Circle 和 Cylinder。 Circle 继承自 Point, Cylinder 继承自 Circle。
每个类都有若干构造函数和析构函数。 Point 类有数据成员 x 和 y,并有一个 getX() 函数和一个 getY() 函数,用于取得 x 和 y 的值。
Circle 类有一个半径 r,和一个 area() 函数,用于计算圆的面积。 Cylinder 类有一个高度 h,和一个求表面积的 area() 函数和一个求体积的 volume() 函数。
在 main() 函数中,我们创建了一个 Cylinder 对象,并打印出该对象的半径、高度、表面积和体积。
希望这能够解答您的问题。如果您还有其他问题,请随时问我。
阅读全文