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