#include<iostream> classA { private: int a; public: A() { a=0; } friendclassB; // Friend Class }; classB { private: int b; public: voidshowA(A& x){ // In B, you can access private member of A by adding friend std::cout << "A::a = " << x.a; } }; intmain(){ A a; B b; b.showA(a); return0; }
上面的程式碼代表著 A 的 private data 可以給 B 使用。
A 將某個 function 設成 firend,則該 function 都可以存取該物件 A 裡的 private、protected、public 的資料。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
#include<iostream> classA { int a; public: A() {a = 0;} friendvoidshowA(A&); // global friend function }; voidshowA(A& x){ // In this function, you can access private member of A by adding friend std::cout << "A::a=" << x.a; } intmain(){ A a; showA(a); return0; }
上面的程式碼代表著 A 的 private data 可以給 showA function 使用。
friend function 可以放在 class 的任何地方,不受關鍵字 private、protected、public 的限制。