在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
這表明友元函數可以像普通成員函數一樣訪問靜態成員。