首先构建一个Point(点)类,包含数据成员x、y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。并且重载运算符“<<”,使之能用于输出Cylinder类的对象。最后在主函数中实例化Cylinder类,并通过cout显示。c++
时间: 2023-11-28 13:50:23 浏览: 69
下面是代码实现:
```cpp
#include <iostream>
using namespace std;
class Point {
public:
double x, y;
Point(double x = 0, double y = 0): x(x), y(y) {}
};
class Circle: public Point {
public:
double r;
Circle(double x = 0, double y = 0, double r = 0): Point(x, y), r(r) {}
};
class Cylinder: public Circle {
public:
double h;
Cylinder(double x = 0, double y = 0, double r = 0, double h = 0): Circle(x, y, r), h(h) {}
friend ostream& operator<<(ostream& os, const Cylinder& c) {
os << "Cylinder: (" << c.x << "," << c.y << "," << c.r << "," << c.h << ")";
return os;
}
};
int main() {
Cylinder c(1, 2, 3, 4);
cout << c << endl;
return 0;
}
```
代码说明:
1. 定义了Point类,有两个数据成员x和y,表示一个二维坐标点。
2. 以Point类为基类,定义了Circle类,增加了一个数据成员r,表示圆的半径。
3. 以Circle类为直接基类,定义了Cylinder类,增加了一个数据成员h,表示圆柱体的高。
4. 重载了Cylinder类的输出运算符<<,用于输出Cylinder类的对象。
5. 在主函数中实例化了一个Cylinder类对象c,并通过cout输出。
阅读全文