C++定义一个圆类,计算圆的周长和面积(要求分别用成员函数和友元函数来求圆的面积和周长)
时间: 2024-11-13 20:39:23 浏览: 47
在C++中,我们可以创建一个名为Circle的类来表示圆,并定义成员函数和友元函数来计算其周长和面积。首先,我们需要包含必要的数学库`<cmath>`来使用π和平方根运算。
```cpp
#include <iostream>
#include <cmath> // 包含数学库
class Circle {
private:
double radius; // 圆的半径
public:
// 构造函数
Circle(double r) : radius(r) {}
// 成员函数:计算周长(直径乘以π)
double circumference() const {
return 2 * M_PI * radius;
}
// 成员函数:计算面积(半径的平方乘以π)
double area() const {
return M_PI * pow(radius, 2);
}
// 友元函数:为了直接访问私有变量radius,这里将area作为友元函数
friend std::ostream& operator<<(std::ostream& os, const Circle& circle);
};
// 定义友元函数用于输出circle的信息
std::ostream& operator<<(std::ostream& os, const Circle& circle) {
os << "Circle with radius " << circle.radius << ": \n";
os << "Circumference: " << circle.circumference() << "\n";
os << "Area: " << circle.area() << "\n";
return os;
}
int main() {
Circle c(5.0);
std::cout << c << std::endl;
return 0;
}
```
在这个例子中,我们有一个成员函数`circumference()`和`area()`分别计算周长和面积。由于我们需要直接访问`radius`来计算面积,所以我们将`area()`声明为友元函数。友元函数允许非成员函数操作类的私有数据。
阅读全文
相关推荐
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)