在C++中,类友元函数是一种特殊的函数,它可以访问类的私有和保护成员。友元函数不是类的成员函数,因此它不受类的访问控制规则的限制。
要声明一个友元函数,可以在类定义中使用friend
关键字。例如:
class MyClass {
private:
int privateVar;
protected:
int protectedVar;
public:
MyClass(int var) : privateVar(var), protectedVar(var) {}
friend void accessPrivateMembers(MyClass& obj);
};
void accessPrivateMembers(MyClass& obj) {
std::cout << "Private variable: " << obj.privateVar << std::endl;
std::cout << "Protected variable: " << obj.protectedVar << std::endl;
}
在上面的示例中,accessPrivateMembers
函数被声明为MyClass
类的友元函数。它可以访问MyClass
类的私有成员privateVar
和保护成员protectedVar
。
要调用友元函数,可以使用类对象作为参数。例如:
int main() {
MyClass obj(10);
accessPrivateMembers(obj);
return 0;
}
输出结果为:
Private variable: 10
Protected variable: 10
需要注意的是,友元函数不是类的成员函数,因此它不受类的访问控制规则的限制。但是,友元函数也不能访问类的私有和保护构造函数和析构函数。