友元函數(shù)是一種非成員函數(shù),擁有訪問私有或受保護成員的權(quán)限。使用友元函數(shù)可方便實現(xiàn)跨類數(shù)據(jù)共享、訪問私有成員以實現(xiàn)特定功能、允許外部函數(shù)訪問類私有數(shù)據(jù)等。
C++ 友元函數(shù)詳解:何時使用友元函數(shù)?
什么是友元函數(shù)?
友元函數(shù)是允許訪問私有或受保護成員的非成員函數(shù)。友元函數(shù)不是類的一部分,但具有訪問類私有成員的權(quán)限。
何時使用友元函數(shù)?
在以下情況下,使用友元函數(shù)很方便:
訪問私有成員以實現(xiàn)特定功能。
跨類進行數(shù)據(jù)共享。
允許外部函數(shù)訪問類私有數(shù)據(jù)。
語法
聲明友元函數(shù)的語法如下:
friend 返回類型 函數(shù)名(參數(shù)列表);
登錄后復制
friend 關(guān)鍵字用于指定函數(shù)為友元函數(shù)。
實戰(zhàn)案例
考慮以下代碼,它定義了一個具有私有成員 data 的類:
class MyClass {
private:
int data;
public:
// ...
};
登錄后復制
現(xiàn)在,我們需要一個友元函數(shù)來訪問 data 成員,以便對其進行修改:
friend void modifyData(MyClass& obj, int newData) {
obj.data = newData;
}
登錄后復制
該 modifyData 函數(shù)聲明為友元函數(shù),因此它可以訪問類 MyClass 的私有成員 data。
注意事項
謹慎使用友元函數(shù),因為它們繞過了封裝性原則。
友元函數(shù)只能訪問私有或受保護成員,不能訪問類私有方法。
友元函數(shù)不是類的一部分,因此不能使用 this 指針。






