设计一个圆柱体类,该类有通过参数初始化对象或通过一个已知对象初始化一个新对象,以及有求圆柱体体积和表面积的功能。c++
时间: 2024-03-17 07:44:55 浏览: 117
库伦摩擦力的MATLAB实现模型和使用示例
好的,我可以为您设计如下的圆柱体类:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
class Cylinder {
private:
double radius;
double height;
public:
Cylinder(double r = 1, double h = 1): radius(r), height(h) {}
Cylinder(const Cylinder& cylinder) {
radius = cylinder.radius;
height = cylinder.height;
}
double volume() const {
return M_PI * radius * radius * height;
}
double surfaceArea() const {
return 2 * M_PI * radius * (radius + height);
}
};
int main() {
Cylinder cylinder1(2, 3);
cout << "The volume of cylinder1 is: " << cylinder1.volume() << endl;
cout << "The surface area of cylinder1 is: " << cylinder1.surfaceArea() << endl;
Cylinder cylinder2(cylinder1);
cout << "The volume of cylinder2 is: " << cylinder2.volume() << endl;
cout << "The surface area of cylinder2 is: " << cylinder2.surfaceArea() << endl;
return 0;
}
```
上述代码中,我们定义了一个名为 `Cylinder` 的圆柱体类,其中有两个私有成员变量 `radius` 和 `height`,分别表示圆柱体的底面半径和高度。我们还定义了两个公有成员函数 `volume` 和 `surfaceArea` 分别用于求圆柱体的体积和表面积。
在构造函数 `Cylinder(double r = 1, double h = 1)` 中,我们定义了两个参数 `r` 和 `h`,并将其默认值设置为 1。这样,在创建圆柱体对象时,如果没有传入参数,则默认创建一个底面半径为 1,高度为 1 的圆柱体。如果需要创建不同半径和高度的圆柱体,可以通过传入对应的参数来实现。
在拷贝构造函数 `Cylinder(const Cylinder& cylinder)` 中,我们定义了一个参数 `cylinder`,并将其半径和高度分别赋值给当前对象的私有成员变量 `radius` 和 `height`,从而实现了通过一个已知对象初始化一个新对象的功能。
最后,我们在 `main` 函数中创建了两个圆柱体对象 `cylinder1` 和 `cylinder2`,并调用它们的成员函数来计算它们的体积和表面积。需要注意的是,在拷贝构造函数和成员函数中,我们使用了 `M_PI` 常量代替了圆周率 $\pi$。
阅读全文