c++实现一个圆柱体类,类中包含私有数据成员半径和高;包含设置圆柱体半径和高、计算圆柱体体积;获取圆柱体半径、高、圆柱体体积的成员函数;能够对数据有效性进行判断处理。编写主函数测试类的使用。
时间: 2024-12-23 12:23:52 浏览: 17
在C++中,你可以创建一个名为`Cylinder`的类来表示圆柱体,包括私有数据成员`radius`(半径)和`height`(高)。为了保证数据的有效性,我们可以添加一些检查功能。以下是这个类的一个基本实现:
```cpp
#include <iostream>
#include <cmath>
class Cylinder {
private:
double radius;
double height;
public:
// 构造函数,设置默认值
Cylinder(double r = 0.0, double h = 0.0) : radius(r), height(h) {
// 数据有效性的初步检查
if (r <= 0 || h <= 0) {
throw std::invalid_argument("Radius and height must be positive.");
}
}
// 设置半径和高的函数,带有验证
void setRadiiAndHeight(double r, double h) {
if (r <= 0 || h <= 0) {
throw std::invalid_argument("Radius and height must be positive.");
}
radius = r;
height = h;
}
// 计算圆柱体体积的函数
double calculateVolume() const {
return M_PI * pow(radius, 2) * height;
}
// 获取半径、高度和体积的函数
double getRadius() const { return radius; }
double getHeight() const { return height; }
double getVolume() const { return calculateVolume(); }
// 主函数用于测试类的使用
static void testCylinder() {
try {
Cylinder cylinder(5, 10);
std::cout << "Radius: " << cylinder.getRadius() << ", Height: " << cylinder.getHeight()
<< ", Volume: " << cylinder.getVolume() << std::endl;
// 非法输入测试
cylinder.setRadiiAndHeight(-1, 10); // 应该抛出异常
} catch (const std::invalid_argument& e) {
std::cerr << "Error: " << e.what() << std::endl;
}
}
};
int main() {
Cylinder::testCylinder();
return 0;
}
```
在这个例子中,我们创建了一个`Cylinder`类,它包含了必要的成员函数以及数据验证。`testCylinder`函数展示了如何创建和操作实例,并捕获了可能出现的数据无效异常。
阅读全文