在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
需要注意的是,友元函數不是類的成員函數,因此它不受類的訪問控制規則的限制。但是,友元函數也不能訪問類的私有和保護構造函數和析構函數。