用C++写一个代码,里面包含三个类,分别为点,圆,圆柱。圆里面要包含点,圆柱里面要包含圆,且圆里面的函数要求出圆的面积,圆柱里面的函数要求出圆柱的表面积。
时间: 2023-10-31 19:19:12 浏览: 84
设计基类点类(Point)、直接派生类圆类(Circle)、间接派生类圆柱体类(Cylinder),将求面积的函数(area)声明成虚函数,并在主函数实现虚函数
好的,我来为你写一个符合要求的代码:
```
#include<iostream>
using namespace std;
const double PI = 3.1415926; // 圆周率
// 点类
class Point {
public:
double x, y; // 点的坐标
Point(double X = 0, double Y = 0) : x(X), y(Y) {}
};
// 圆类
class Circle {
public:
Point center; // 圆心
double radius; // 半径
Circle(Point C, double R) : center(C), radius(R) {}
double area() { // 计算圆的面积
return PI * radius * radius;
}
};
// 圆柱类
class Cylinder {
public:
Circle bottom; // 底面圆
double height; // 高度
Cylinder(Circle B, double H) : bottom(B), height(H) {}
double surfaceArea() { // 计算圆柱的表面积
return 2 * bottom.area() + 2 * PI * bottom.radius * height;
}
};
int main() {
Point p(1, 2);
Circle c(p, 3);
Cylinder cy(c, 4);
cout << "圆的面积:" << c.area() << endl;
cout << "圆柱的表面积:" << cy.surfaceArea() << endl;
return 0;
}
```
以上代码定义了三个类,分别是点类 `Point`、圆类 `Circle` 和圆柱类 `Cylinder`。其中,点类只包含了点的坐标,圆类包含了圆心和半径,并且还有一个计算圆面积的函数 `area()`;圆柱类则包含了底面圆和高度,并且有一个计算圆柱表面积的函数 `surfaceArea()`。在 `main()` 函数中,我们创建了一个点对象、一个圆对象和一个圆柱对象,并分别输出了圆的面积和圆柱的表面积。
阅读全文