在C++中,友元函数(friend function)可以访问类的私有(private)和保护(protected)成员。但是,对于静态成员,友元函数的访问权限与普通成员函数相同,因为静态成员属于类本身,而不是类的实例。
以下是一个示例,展示了如何在友元函数中处理静态成员:
#include <iostream>
class MyClass {
public:
static int staticMember;
MyClass() {
std::cout << "MyClass constructor called" << std::endl;
}
~MyClass() {
std::cout << "MyClass destructor called" << std::endl;
}
friend void accessStaticMember(MyClass &obj);
};
int MyClass::staticMember = 10;
void accessStaticMember(MyClass &obj) {
std::cout << "Accessing static member: " << MyClass::staticMember << std::endl;
}
int main() {
MyClass obj;
accessStaticMember(obj);
return 0;
}
在这个示例中,我们定义了一个名为MyClass
的类,其中包含一个静态成员staticMember
。我们还定义了一个友元函数accessStaticMember
,它可以访问MyClass
的静态成员。
在main
函数中,我们创建了一个MyClass
对象obj
,然后调用accessStaticMember
函数来访问静态成员。输出结果如下:
MyClass constructor called
Accessing static member: 10
MyClass destructor called
这表明友元函数可以像普通成员函数一样访问静态成员。