c++++ 中友元函數可以通過訪問說明符或名稱空間限制訪問權限,以實現僅允許特定函數或特定命名空間內的函數訪問類的私有成員。
C++ 友元函數詳解:如何限制友元函數的訪問權限?
在 C++ 中,友元函數是允許外部函數訪問類的私有成員的特別函數。它使我們能夠在一個類之外訪問另一個類的私有數據或函數,從而在某些情況下提供更大的靈活性。
限制友元函數訪問權限
我們可以通過限制友元聲明來限制友元函數對私有成員的訪問權限。有兩種方法可以做到這一點:
方法 1:使用訪問說明符
我們可以使用訪問說明符(public、protected 或 private)來限制友元函數的訪問權限。語法如下:
class MyClass { private: // 私有成員只能被友元函數訪問 friend void friendFunction(); };
登錄后復制
方法 2:使用名稱空間
也可以使用名稱空間來限制友元函數的可見性。語法如下:
namespace MyNamespace { class MyClass { private: // 私有成員由 MyNameSpace 命名空間內部所有友元函數訪問 friend class MyFriendClass; }; }
登錄后復制
實戰案例
假設我們有以下兩個類:
class Person { private: string name; int age; }; class FriendClass { public: // 可以訪問私有成員,因為它是一個友元類 void printPersonDetails(Person person) { cout << person.name << ", " << person.age << endl; } };
登錄后復制
在這里,FriendClass
是 Person
類的友元類,因此它可以訪問 name
和 age
等私有成員。
運行示例
int main() { Person person{"John Doe", 30}; FriendClass friendObj; friendObj.printPersonDetails(person); return 0; }
登錄后復制
輸出:
John Doe, 30
登錄后復制