定义一个点类(Point)、圆类(Circle)和圆柱体类 (Cylinder)的层次结构。圆包括圆心和半径两个数据成 员,圆心具有点类的所有特征。圆柱体类由半径和高构 成。要求各类提供支持初始化的构造函数和显示自己成 员的成员函数。编写主函数,测试这个层次结构,输出圆 柱体类的相关信息。
时间: 2024-03-01 18:54:19 浏览: 197
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
5星 · 资源好评率100%
好的,我理解了你的问题。下面是一个可能的实现:
```c++
class Point {
public:
Point(float x, float y, float z) : x_(x), y_(y), z_(z) {}
void display() const {
std::cout << "(" << x_ << ", " << y_ << ", " << z_ << ")";
}
private:
float x_, y_, z_;
};
class Circle : public Point {
public:
Circle(float x, float y, float z, float r) : Point(x, y, z), r_(r) {}
void display() const {
std::cout << "Circle: center";
Point::display();
std::cout << ", radius " << r_ << std::endl;
}
private:
float r_;
};
class Cylinder : public Circle {
public:
Cylinder(float x, float y, float z, float r, float h) : Circle(x, y, z, r), h_(h) {}
void display() const {
std::cout << "Cylinder: ";
Circle::display();
std::cout << ", height " << h_ << std::endl;
}
private:
float h_;
};
```
在这个实现中,点类 Point 包含三个坐标,以及一个成员函数 display,用于显示点的坐标。圆类 Circle 继承了点类 Point,增加了一个半径成员 r,并且重载了 display 函数,用于显示圆的中心和半径。圆柱体类 Cylinder 继承了圆类 Circle,增加了一个高度成员 h,并且同样重载了 display 函数,用于显示圆柱体的基本信息。
下面是一个测试程序:
```c++
int main() {
Point p(0, 0, 0);
Circle c(1, 1, 1, 2);
Cylinder cy(2, 2, 2, 3, 4);
p.display();
c.display();
cy.display();
return 0;
}
```
这个测试程序首先创建了一个点 p,一个圆 c,和一个圆柱体 cy。然后分别调用它们的 display 函数,输出它们的信息。输出结果如下:
```
(0, 0, 0)
Circle: center(1, 1, 1), radius 2
Cylinder: Circle: center(2, 2, 2), radius 3, height 4
```
可以看到,这个层次结构的实现可以正确地显示各个类的信息。
阅读全文