在C++中,友元函數(shù)(friend function)可以訪問類的私有(private)和保護(hù)(protected)成員。但是,對(duì)于靜態(tài)成員,友元函數(shù)的訪問權(quán)限與普通成員函數(shù)相同,因?yàn)殪o態(tài)成員屬于類本身,而不是類的實(shí)例。
以下是一個(gè)示例,展示了如何在友元函數(shù)中處理靜態(tài)成員:
#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;
}
在這個(gè)示例中,我們定義了一個(gè)名為MyClass
的類,其中包含一個(gè)靜態(tài)成員staticMember
。我們還定義了一個(gè)友元函數(shù)accessStaticMember
,它可以訪問MyClass
的靜態(tài)成員。
在main
函數(shù)中,我們創(chuàng)建了一個(gè)MyClass
對(duì)象obj
,然后調(diào)用accessStaticMember
函數(shù)來訪問靜態(tài)成員。輸出結(jié)果如下:
MyClass constructor called
Accessing static member: 10
MyClass destructor called
這表明友元函數(shù)可以像普通成員函數(shù)一樣訪問靜態(tài)成員。