定义一个圆类,计算圆的面积和周长。 要求:分别用成员函数和友元函数来求圆的面积和周长。
时间: 2024-11-15 22:31:01 浏览: 29
在C++中,我们可以定义一个`Circle`类,包含半径`radius`作为数据成员,然后提供成员函数`get_area()`和`get_circumference()`来计算圆的面积和周长。同时,为了方便操作,我们也可以定义一个友元函数,使其可以直接访问类的私有成员。
```cpp
#include <cmath> // 引入math库以使用pi和pow函数
class Circle {
private:
double radius; // 圆的半径
public:
// 构造函数
Circle(double r) : radius(r) {}
// 成员函数 - 计算面积
double get_area() const {
return M_PI * pow(radius, 2); // 使用π乘以半径的平方
}
// 成员函数 - 计算周长
double get_circumference() const {
return 2 * M_PI * radius;
}
// 友元函数 - 直接访问半径
friend std::ostream& operator<<(std::ostream& os, const Circle& circle);
};
// 友元函数实现 - 输出圆的信息
std::ostream& operator<<(std::ostream& os, const Circle& circle) {
os << "Circle with radius " << circle.radius << ": Area = " << circle.get_area()
<< ", Circumference = " << circle.get_circumference() << std::endl;
return os;
}
int main() {
Circle c(5.0);
std::cout << c; // 输出圆的半径、面积和周长
return 0;
}
```
在这个例子中,`operator<<`是一个友元函数,它允许我们在输出流上直接打印出`Circle`对象的信息。在`main()`函数中创建了一个`Circle`实例并调用了相应的成员函数获取面积和周长,然后通过友元函数将其信息输出到控制台。
阅读全文