编写一个圆类Circle,该类拥有: ① 1个成员变量,存放圆的半径; ② 两个构造方法 Circle( ) // 将半径设为0 Circle(double r ) //创建Circle对象时将半径初始化为r ③ 三个成员方法 double getArea( ) //获取圆的面积 double getPerimeter( ) //获取圆的周长 void show( ) //将圆的半径、周长、面积输出到屏幕
时间: 2025-07-23 11:09:35 浏览: 1
<think>根据要求,我们需要编写一个圆类Circle,包含一个成员变量(半径),两个构造函数(默认构造函数和带参数的构造函数),以及三个成员方法(获取面积、获取周长、显示信息)。
注意:圆周率可以使用3.14,也可以使用数学库中的M_PI(需要包含<cmath>),但为了通用性,我们这里使用3.14。
步骤:
1. 定义Circle类,包含一个private的double类型成员变量radius。
2. 提供两个构造函数:默认构造函数将半径设为0.0,另一个构造函数接受一个double参数来初始化半径。
3. 编写三个成员函数:
getArea(): 计算并返回圆的面积(公式:π * r * r)
getPerimeter(): 计算并返回圆的周长(公式:2 * π * r)
show(): 将圆的半径、周长、面积输出到屏幕,可以格式化输出。
注意:由于我们使用了固定的π值(3.14),所以直接使用即可。如果希望更精确,可以使用M_PI,但需要包含<cmath>并定义_USE_MATH_DEFINES(在某些编译器上)。这里为了简单,使用3.14。
代码实现:</think>### 圆类 Circle 的 C++ 实现
以下是完整的 `Circle` 类实现代码:
```cpp
#include <iostream>
#include <iomanip> // 用于格式化输出
class Circle {
private:
double radius; // 成员变量:圆的半径
public:
// ① 构造方法
Circle() : radius(0.0) {} // 默认构造,半径设为0
Circle(double r) : radius(r) {} // 参数化构造,初始化半径
// ② 成员方法
double getArea() const {
return 3.14159 * radius * radius; // 面积 = πr²
}
double getPerimeter() const {
return 2 * 3.14159 * radius; // 周长 = 2πr
}
void show() const {
std::cout << std::fixed << std::setprecision(2); // 固定小数点,保留2位
std::cout << "半径: " << radius << " 单位\n";
std::cout << "周长: " << getPerimeter() << " 单位\n";
std::cout << "面积: " << getArea() << " 单位平方\n";
}
};
// 使用示例
int main() {
Circle c1; // 默认构造(半径=0)
Circle c2(5.0); // 参数构造(半径=5.0)
std::cout << "c1 圆信息:\n";
c1.show(); // 输出: 半径0的圆信息
std::cout << "\nc2 圆信息:\n";
c2.show(); // 输出: 半径5.0的圆信息
return 0;
}
```
### 关键设计解析
1. **成员变量**
`private double radius` 封装半径数据,防止外部直接修改。
2. **构造方法**
- 默认构造 `Circle()` 使用成员初始化列表设置 `radius=0`
- 参数构造 `Circle(double r)` 直接初始化半径
(注意:未做负半径校验,实际工程需添加异常处理)
3. **成员方法**
- `getArea()`/`getPerimeter()`:标记为 `const`,保证不修改对象状态
- `show()`:格式化输出(固定小数点+2位精度),调用其他方法避免重复计算
- π 使用 3.14159 保证基础精度(实际项目可用 `M_PI` 需包含 `<cmath>`)
4. **使用示例**
主函数演示两种构造方式,并调用 `show()` 输出结果:
```
c1 圆信息:
半径: 0.00 单位
周长: 0.00 单位
面积: 0.00 单位平方
c2 圆信息:
半径: 5.00 单位
周长: 31.42 单位
面积: 78.54 单位平方
```
### 常见问题改进方向
1. 负半径处理:构造函数中可添加 `if(r < 0) throw std::invalid_argument("半径不能为负");`
2. 精度提升:使用 `constexpr double PI = 3.1415926535;` 或标准库 `M_PI`
3. 输出定制:为 `show()` 增加参数控制输出格式(如精度、单位)
---
###
阅读全文
相关推荐



















