首先构建一个Point(点)类,包含数据成员x、y(坐标点)。以它为基类,派生出一个Circle(圆)类,增加数据成员r(半径),再以Circle类为直接基类,派生出一个Cylinder(圆柱体)类,再增加数据成员h(高)。并且重载运算符“<<”,使之能用于输出Cylinder类的对象。最后在主函数中实例化Cylinder类,并通过cout显示。在每句后面添加注释
时间: 2023-12-03 10:42:54 浏览: 79
类的派生运用
下面是代码实现:
```c++
#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 cylinder(1, 2, 3, 4);
cout << cylinder << endl; // 输出:Cylinder: (1, 2, 3, 4)
return 0;
}
```
代码注释如下:定义了一个点类 Point,其中包含了两个数据成员 x 和 y,表示点的坐标。然后定义了一个圆类 Circle,继承自 Point 类,增加了一个数据成员 r,表示圆的半径。接着定义了一个圆柱类 Cylinder,继承自 Circle 类,增加了一个数据成员 h,表示圆柱的高度。在 Cylinder 类中,重载了运算符 <<,用于输出 Cylinder 类的对象。最后在主函数中实例化了一个 Cylinder 类的对象,并通过 cout 输出。
阅读全文