友元函数
在C++中,友元函数是一个特殊的函数,它可以在类的内部访问类的私有和保护成员。通常,只有类的成员函数可以访问类的私有和保护成员。但是,通过将函数声明为友元,可以允许其他函数(包括非成员函数)访问这些成员。
友元函数可以是全局函数、另一个类的成员函数,或者当前类的成员函数。当友元函数是当前类的成员函数时,它不仅可以访问类的私有和保护成员,还可以访问类的所有成员,包括私有和保护的。
以下是一个使用友元函数的简单示例:
#include <iostream>
class MyClass {
public:
MyClass(int value) : m_value(value) {}
// 声明一个友元函数
friend void printValue(MyClass obj);
private:
int m_value;
};
// 定义一个全局函数,作为友元函数
void printValue(MyClass obj) {
std::cout << "Value: " << obj.m_value << std::endl;
}
int main() {
MyClass obj(10);
printValue(obj); // 调用友元函数
return 0;
}
在这个示例中,MyClass
类有一个私有成员m_value
。由于printValue
函数被声明为MyClass
的友元,它能够访问m_value
成员。在main
函数中,我们创建了一个MyClass
对象并调用了printValue
函数,该函数打印出对象的值。