日志12
在C++中,友元函数(friend function)是一种可以访问类的私有成员和保护成员的特殊函数。友元函数并不是类的成员函数,而是定义在类外的普通函数。但由于被声明为友元,它可以直接访问类的私有和保护成员。
友元函数的特点
- 访问权限:友元函数可以访问类的私有和保护成员。
- 非成员函数:友元函数是类外的普通函数,不属于类的成员函数。
- 需要显式声明:友元函数必须在类的内部通过关键字
friend声明。
友元函数的使用场景
- 当需要某些外部函数对类的私有成员进行操作时,可以使用友元函数。
- 两个类之间需要共享数据时,可以通过友元函数实现。
友元函数的声明与实现
示例代码
以下是一个友元函数的简单示例:
#include <iostream>
using namespace std;
// 定义一个类
class Box {
private:
double length; // 私有成员
double width;
double height;
public:
// 构造函数
Box(double l, double w, double h) : length(l), width(w), height(h) {}
// 声明友元函数
friend double calculateVolume(const Box& b);
};
// 定义友元函数
double calculateVolume(const Box& b) {
// 直接访问类的私有成员
return b.length * b.width * b.height;
}
int main() {
Box box(2.0, 3.0, 4.0);
cout << "Box volume: " << calculateVolume(box) << endl;
return 0;
}
输出结果
Box volume: 24
注意事项
- 友元函数的声明:必须在类内部进行,但实现可以在类外部。
- 友元关键字的使用:友元函数通过
friend声明,它是类对外的一种“友好行为”,但要谨慎使用,过多的友元可能破坏封装性。 - 友元函数与继承:友元关系不能继承,子类不会自动成为友元函数的友元。
查看13道真题和解析
