定義:
當一個類B成為了另外一個類A的“朋友”時,那么類A的私有和保護的數據成員就可以被類B訪問。我們就把類B叫做類A的友元。
用法:
在A類中加入:
friend class B;
下面這個程序說明了友元類與友元派生類的權限。
class A { public: friend class FriendA; private: int a; }; class FriendA { public: void print(A& ca) { //因為是友元類,所以可以訪問A類的私有成員。 ca.a = 3; std::cout << ca.a << std::endl; } }; class FriendA1 : public FriendA { public: void print1(A& ca) { //編譯錯誤,繼承后新定義的函數並不帶有友元性質。 ca.a = 4; std::cout << ca.a << std::endl; } }; int main() { A a; FriendA fa; fa.print(a); FriendA1 fa1; fa1.print(a);//父類的該函數為友元函數。 //fa1.print1(a); return 0; }
//總結,也就是聲明友元類時,友元類中所有的函數變為了友元函數。 而后面派生新加的函數則不為友元函數。
//重寫函數、虛函數也不行。