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