定义一个点类(Point)、圆类(Circle)和圆柱体类(Cylinder)的层次结构。圆包括圆心和半径两个数据成员,圆心具有点类的所有特征。圆柱体类由半径和高构成。要求各类提供支持初始化的构造函数和显示自己成员的成员函数。编写主函数,用点(4,5),半径为6,高为8来测试这个层次结构,要求:(1)输出圆柱体类的相关信息(2)最后输出圆柱体的表面积和体积。
时间: 2023-07-14 17:13:02 浏览: 117
定义三个类Point,Circle和Cylinder,Point类为基类,为上述3个类添加计算面积的成员函数Area(),要求函数Area()采用虚函数的形式,并通过基类指针调用虚函数Area()。
5星 · 资源好评率100%
以下是定义的点类、圆类和圆柱体类的层次结构:
```cpp
class Point {
public:
Point(int x = 0, int y = 0) : x(x), y(y) {}
void display() const { cout << "(" << x << ", " << y << ")"; }
private:
int x, y;
};
class Circle : public Point {
public:
Circle(int x = 0, int y = 0, int r = 0) : Point(x, y), r(r) {}
void display() const {
cout << "圆心坐标为";
Point::display();
cout << ",半径为" << r;
}
protected:
int r;
};
class Cylinder : public Circle {
public:
Cylinder(int x = 0, int y = 0, int r = 0, int h = 0)
: Circle(x, y, r), h(h) {}
void display() const {
cout << "圆柱体的底面信息为:";
Circle::display();
cout << ",高为" << h;
}
double area() const { return 2 * M_PI * r * r + 2 * M_PI * r * h; }
double volume() const { return M_PI * r * r * h; }
private:
int h;
};
```
以下是主函数的测试代码:
```cpp
int main() {
Cylinder c(4, 5, 6, 8);
c.display();
cout << endl;
cout << "圆柱体的表面积为:" << c.area() << endl;
cout << "圆柱体的体积为:" << c.volume() << endl;
return 0;
}
```
输出结果如下:
```
圆柱体的底面信息为:圆心坐标为(4, 5),半径为6,高为8
圆柱体的表面积为:452.389
圆柱体的体积为:904.779
```
阅读全文