最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C++從0到1基礎(chǔ)教程之友元,3段代碼助你零基礎(chǔ)修行C++友元

2020-09-06 23:02 作者:C語言基礎(chǔ)  | 我要投稿


前言

上一章節(jié)主要是詳細(xì)介紹了const成員和static成員。不清楚的可以回顧一下哦。本章節(jié)主要針對于C++中的友元做一個詳細(xì)介紹。

友元

友元(frend)機(jī)制允許一個類將對其非公有成員的訪問權(quán)授予指定的函數(shù)或者類,友元的聲明以friend開始,它只能出現(xiàn)在類定義的內(nèi)部,友元聲明可以出現(xiàn)在類中的任何地方。友元可以是一個函數(shù),該函數(shù)被稱為友元函數(shù);友元也可以是一個類,該類被稱為友元類,在這種情況下,整個類及其所有成員都是友元。

友元函數(shù)

友元函數(shù)的使用,因?yàn)橛言瘮?shù)沒有this指針,則參數(shù)要有三種情況:?

  • 要訪問非static成員時,需要對象做參數(shù)。

  • 訪問static成員或全局變量時,則不需要對象做參數(shù)。

  • 全局對象則不需要對象做參數(shù)。

  • 可以直接調(diào)用友元函數(shù),不需要通過對象或指針。

  • 在友元函數(shù)中對象或者指針才具有無視權(quán)限限定的特權(quán)

測試學(xué)習(xí)代碼如下:

成員函數(shù)是友元函數(shù)

使類B中的成員函數(shù)成為類A的友元函數(shù),這樣類B的該成員函數(shù)就可以訪問類A的所有成員了。

當(dāng)用到友元成員函數(shù)時,需注意友元聲明和友元定義之間的相互依賴,在該例子中,類B必須先定義,否則類A就不能將一個B的函數(shù)指定為友元。然而,只有在定義了類A之后,才能定義類B的該成員函數(shù)。更一般的講,必須先定義包含成員函數(shù)的類,才能將成員函數(shù)設(shè)為友元。另一方面,不必預(yù)先聲明類和非成員函數(shù)來將它們設(shè)為友元。

如下測試代碼:

友元類

友元類的所有成員函數(shù)都是另一個類的友元函數(shù),都可以訪問另一個類中的隱藏信息(包括私有成員和保護(hù)成員)。當(dāng)希望一個類可以存取另一個類的私有成員時,可以將該類聲明為另一類的友元類。

關(guān)于友元類的注意事項(xiàng):

  • 友元關(guān)系不能被繼承。

  • 友元關(guān)系是單向的。

  • 友元關(guān)系不具有傳遞性。

如一下測試代碼:

尾言

允許某些特定的非成員函數(shù)訪問一個類的私有成員(及受保護(hù)成員),而同時仍阻止一般的訪問的情況下,友元是可用的。

優(yōu)點(diǎn):

1.靈活實(shí)現(xiàn)訪問若干類私有或受保護(hù)成員才能完成的任務(wù);

2.便于與不支持類的語言(如C語言、匯編等)進(jìn)行混合編程;

3.更自然地使用C++語言的IO流庫。

缺點(diǎn):一個類將對其非公有成員的訪問權(quán)限授予其他函數(shù)或者類,會破壞該類的封裝性,降低該類的可靠性和可維護(hù)性。



C++從0到1基礎(chǔ)教程之友元,3段代碼助你零基礎(chǔ)修行C++友元的評論 (共 條)

分享到微博請遵守國家法律
云林县| 璧山县| 甘泉县| 永靖县| 清流县| 长寿区| 自贡市| 潢川县| 弋阳县| 梨树县| 济源市| 肇州县| 西藏| 赤峰市| 库尔勒市| 高阳县| 喜德县| 新余市| 抚宁县| 思南县| 长汀县| 且末县| 罗甸县| 克东县| 仲巴县| 襄城县| 阿合奇县| 乌拉特后旗| 西丰县| 黔江区| 大方县| 辉南县| 巴中市| 澜沧| 宜君县| 含山县| 揭西县| 鄯善县| 柳林县| 金寨县| 苏尼特右旗|