新聞中心
在C++編程語(yǔ)言中,有很多功能及應(yīng)用方式與其他編程語(yǔ)言大不相同,而且使用方式靈活,可以使程序員大大提高編程效率。在這里我們將會(huì)針對(duì)C++友元函數(shù)的基本概念進(jìn)行一個(gè)詳細(xì)的介紹。#t#

定義:允許一個(gè)類(lèi)將對(duì)其非公有成員的訪問(wèn)權(quán)授予指定的類(lèi)或函數(shù)(分別是友元類(lèi)和C++友元函數(shù))。
說(shuō)明:友元是非成員函數(shù),即它并不是授予友元關(guān)系的那個(gè)類(lèi)的成員,它的聲明可以出現(xiàn)在類(lèi)中的任何地方(因此它們也不受其聲明出現(xiàn)部分的訪問(wèn)控制的影響)
編程風(fēng)格:雖然友元的聲明可以出現(xiàn)在類(lèi)中任何地方,但是將友元聲明成組的放在類(lèi)定義的開(kāi)始或者結(jié)尾是個(gè)好主意。
注:1、當(dāng)將類(lèi)A的成員函數(shù)F聲明為類(lèi)B的友元時(shí),必須在B的定義中將F用A限定。
2、C++友元函數(shù)只能訪問(wèn)對(duì)象的私有成員,不能直接訪問(wèn)類(lèi)的私有成員(因此在調(diào)用友元時(shí),必須在實(shí)參中指定友元要訪問(wèn)的類(lèi)的對(duì)象)。
兩個(gè)性質(zhì):
1、不具有傳遞性。
即:假設(shè)B是A的友元類(lèi),C是B的C++友元函數(shù),那么C不能直接訪問(wèn)A的私有成員。
2、不具有繼承性。
即:假設(shè)B是基類(lèi)A的友元函數(shù),C是A的繼承類(lèi),那么B不能直接訪問(wèn)C的私有成員。
如果派生類(lèi)想要將自己成員的訪問(wèn)權(quán)授予其基類(lèi)的友元,派生類(lèi)必須顯式地這樣聲明友元。 //基類(lèi)的友元對(duì)從該基類(lèi)派生的類(lèi)型沒(méi)有特殊訪問(wèn)權(quán)限。
- class A
- {
- friend class C;
- }
- class B : public A
- {
- friend class C; //friend 無(wú)法繼承
- }
- class C
- {
- }
同樣,如果基類(lèi)和派生類(lèi)都需要訪問(wèn)另一個(gè)類(lèi),則那個(gè)類(lèi)必須特地將訪問(wèn)權(quán)限授予基類(lèi)和每一個(gè)派生類(lèi).
- class A
- {
- }
- class B : public A
- {
- }
- class C
- {
- friend class A;
- friend class B;
- }
以上就是對(duì)C++友元函數(shù)的相關(guān)概念介紹。
網(wǎng)頁(yè)標(biāo)題:C++友元函數(shù)基本應(yīng)用方式解析
URL網(wǎng)址:http://www.5511xx.com/article/dhojeos.html


咨詢(xún)
建站咨詢(xún)
