在C++編程語言中,有很多功能及應用方式與其他編程語言大不相同,而且使用方式靈活,可以使程序員大大提高編程效率。在這裡我們將會針對C++友元函數的基本概念進行一個詳細的介紹。
定義:允許一個類將對其非公有成員的訪問權授予指定的類或函數分別是友元類和C++友元函數)。
說明:友元是非成員函數,即它並不是授予友元關系的那個類的成員,它的聲明可以出現在類中的任何地方因此它們也不受其聲明出現部分的訪問控制的影響)
編程風格:雖然友元的聲明可以出現在類中任何地方,但是將友元聲明成組的放在類定義的開始或者結尾是個好主意。
注:1、當將類A的成員函數F聲明為類B的友元時,必須在B的定義中將F用A限定。
2、C++友元函數只能訪問對象的私有成員,不能直接訪問類的私有成員因此在調用友元時,必須在實參中指定友元要訪問的類的對象)。
兩個性質:
1、不具有傳遞性。
即:假設B是A的友元類,C是B的C++友元函數,那麼C不能直接訪問A的私有成員。
2、不具有繼承性。
即:假設B是基類A的友元函數,C是A的繼承類,那麼B不能直接訪問C的私有成員。
如果派生類想要將自己成員的訪問權授予其基類的友元,派生類必須顯式地這樣聲明友元。 //基類的友元對從該基類派生的類型沒有特殊訪問權限。
- class A
- {
- friend class C;
- }
- class B : public A
- {
- friend class C; //friend 無法繼承
- }
- class C
- {
- }
同樣,如果基類和派生類都需要訪問另一個類,則那個類必須特地將訪問權限授予基類和每一個派生類.
- class A
- {
- }
- class B : public A
- {
- }
- class C
- {
- friend class A;
- friend class B;
- }
以上就是對C++友元函數的相關概念介紹。