编程1:定义一个圆类,计算圆的面积和周长。 要求:分别用成员函数和友元函数来求圆的面积和周长。
时间: 2024-11-18 09:27:26 浏览: 22
在C++中,我们可以创建一个名为Circle的类,包含半径作为数据成员,同时提供成员函数(如`getArea()`和`getCircumference()`)以及友元函数来计算圆的面积和周长。友元函数是为了能够直接访问私有或保护成员而设计的。以下是具体的代码示例:
```cpp
#include <cmath> // 引入数学库以便使用pi和sqrt
class Circle {
private:
double radius; // 圆的半径
public:
// 构造函数
Circle(double r) : radius(r) {}
// 成员函数:计算面积
double getArea() const {
return M_PI * pow(radius, 2); // M_PI是π的近似值
}
// 成员函数:计算周长
double getCircumference() const {
return 2 * M_PI * radius;
}
// 友元函数:为了能直接访问私有变量radius
friend std::ostream& operator<<(std::ostream& os, const Circle& circle); // 输出圆的信息
};
// 友元函数实现:用于输出circle对象信息
std::ostream& operator<<(std::ostream& os, const Circle& circle) {
os << "半径: " << circle.radius << ", 面积: " << circle.getArea() << ", 周长: " << circle.getCircumference();
return os;
}
int main() {
Circle c(5.0); // 创建一个半径为5的圆
std::cout << "圆的详细信息:\n" << c; // 使用友元函数输出圆的面积和周长
return 0;
}
```
这个例子中,`getArea()`和`getCircumference()`是成员函数,可以直接访问实例的属性;`operator<<`是友元函数,可以像操作普通变量一样直接获取`Circle`类的对象信息。在`main`函数中,我们创建了一个圆对象并显示其面积和周长。
阅读全文