最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++友元函數(shù)和友元類的使用與區(qū)別

 更新時(shí)間:2023年07月05日 09:07:17   作者:誰(shuí)能久伴不乏  
本文主要介紹了C++友元函數(shù)和友元類的使用與區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

1.友元介紹

在C++中,友元(friend)是一種機(jī)制,允許某個(gè)類或函數(shù)訪問其他類的私有成員。通過友元,可以授予其他類或函數(shù)對(duì)該類的私有成員的訪問權(quán)限。友元關(guān)系在一些特定的情況下很有用,例如在類之間共享數(shù)據(jù)或?qū)崿F(xiàn)特定的功能。

友元可以分為兩種類型:類友元和函數(shù)友元。

2.類友元

類友元(Friend Class):

  • 可以將一個(gè)類聲明為另一個(gè)類的友元。這樣,在被聲明為友元的類中,就可以直接訪問另一個(gè)類的私有成員。
  • 類友元關(guān)系在類之間共享數(shù)據(jù)或?qū)崿F(xiàn)特定功能時(shí)很有用。
  • 友元關(guān)系是單向的,不具有傳遞性。如果類A是類B的友元,類B不一定是類A的友元。
  • 友元關(guān)系通常在類的聲明部分使用 friend 關(guān)鍵字來聲明。

2.1示例代碼

class FriendClass {
private:
? ? int privateData;
public:
? ? FriendClass() : privateData(0) {}
? ? friend class OtherClass; ?// 聲明 OtherClass 是 FriendClass 的友元類
};
class OtherClass {
public:
? ? void accessPrivateData(FriendClass& obj) {
? ? ? ? obj.privateData = 42; ?// 可以直接訪問 FriendClass 的私有成員
? ? }
};

3.函數(shù)友元

函數(shù)友元(Friend Function)

  • 可以將一個(gè)函數(shù)聲明為一個(gè)類的友元函數(shù)。這樣,在友元函數(shù)中可以直接訪問該類的私有成員。
  • 友元函數(shù)可以是非成員函數(shù),也可以是其他類的成員函數(shù)。
  • 友元函數(shù)通常在類的聲明部分或聲明外部使用 friend 關(guān)鍵字來聲明。

3.1示例代碼

class MyClass {
private:
? ? int privateData;
public:
? ? MyClass() : privateData(0) {}
? ? friend void friendFunction(MyClass& obj); ?// 聲明 friendFunction 是 MyClass 的友元函數(shù)
};
void friendFunction(MyClass& obj) {
? ? obj.privateData = 42; ?// 可以直接訪問 MyClass 的私有成員
}

4.總結(jié)

友元的使用場(chǎng)景包括但不限于以下情況:

  • 當(dāng)兩個(gè)或多個(gè)類需要共享私有數(shù)據(jù)時(shí),可以使用類友元來實(shí)現(xiàn)數(shù)據(jù)的直接訪問,而無需通過公有接口。
  • 當(dāng)某個(gè)類需要提供特定函數(shù)或操作給其他類使用,但這些函數(shù)需要訪問類的私有成員時(shí),可以使用函數(shù)友元。
  • 在重載運(yùn)算符或?qū)崿F(xiàn)某些特定功能時(shí),友元可以提供對(duì)類私有成員的直接訪問。
  • 需要注意的是,友元機(jī)制破壞了封裝性,因?yàn)槠渌惢蚝瘮?shù)可以直接訪問被授予友元權(quán)限的類的私有成員。因此,應(yīng)謹(jǐn)慎使用友元,只在必要的情況下使用,并且僅將其授予最少的訪問權(quán)限。

到此這篇關(guān)于C++友元函數(shù)和友元類的使用與區(qū)別的文章就介紹到這了,更多相關(guān)C++友元函數(shù)和友元類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言/C++中如何產(chǎn)生隨機(jī)數(shù)

    C語(yǔ)言/C++中如何產(chǎn)生隨機(jī)數(shù)

    這里要用到的是rand()函數(shù), srand()函數(shù),和time()函數(shù)。需要說明的是,iostream頭文件中就有srand函數(shù)的定義,不需要再額外引入stdlib.h;而使用time()函數(shù)需要引入ctime頭文件
    2013-10-10
  • VC++ loadlibrary()加載三方dll失敗, 返回錯(cuò)誤碼:126的解決方法

    VC++ loadlibrary()加載三方dll失敗, 返回錯(cuò)誤碼:126的解決方法

    今天在編寫VC++ loadlibrary()加載三方dll是總是失敗,并且返回錯(cuò)誤碼:126,這里就為大家分享一下具體的解決方法
    2021-03-03
  • C語(yǔ)言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    C語(yǔ)言編程內(nèi)存分配通訊錄靜態(tài)實(shí)現(xiàn)示例代碼教程

    這篇文章主要為大家介紹了C語(yǔ)言編程實(shí)現(xiàn)靜態(tài)的通訊錄示例代碼教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-10-10
  • C語(yǔ)言memset函數(shù)詳解

    C語(yǔ)言memset函數(shù)詳解

    這篇文章主要介紹了C語(yǔ)言中的memset()函數(shù),包括其與memcpy()函數(shù)的區(qū)別,需要的朋友可以參考下,希望能夠給你帶來幫助
    2021-09-09
  • QT中大部分部件如何使用舉例詳解

    QT中大部分部件如何使用舉例詳解

    QWidget類是所有用戶界面對(duì)象的基類,被稱為基礎(chǔ)窗口部件,下面這篇文章主要給大家介紹了關(guān)于QT中大部分部件如何使用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析

    C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析

    大家好,本篇文章主要講的是C語(yǔ)言中結(jié)構(gòu)體實(shí)例解析,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • C語(yǔ)言可變參數(shù)函數(shù)詳解示例

    C語(yǔ)言可變參數(shù)函數(shù)詳解示例

    一般我們編程的時(shí)候,函數(shù)中形式參數(shù)的數(shù)目通常是確定的,在調(diào)用時(shí)要依次給出與形式參數(shù)對(duì)應(yīng)的實(shí)際參數(shù)。但在某些情況下我們希望函數(shù)的參數(shù)個(gè)數(shù)可以根據(jù)需要確定,因此c語(yǔ)言引入可變參數(shù)函數(shù)。典型的可變參數(shù)函數(shù)的例子有printf()、scanf()等,下面我就開始講解
    2013-11-11
  • 最新評(píng)論

    忻城县| 鄂托克旗| 祁阳县| 武功县| 墨玉县| 板桥市| 广安市| 石门县| 海伦市| 吴堡县| 昭觉县| 乐清市| 陆川县| 阿城市| 沂水县| 达孜县| 长春市| 泰宁县| 遂溪县| 太白县| 西青区| 富锦市| 京山县| 灌云县| 新密市| 上思县| 荥经县| 桓仁| 始兴县| 永登县| 梁山县| 德钦县| 内黄县| 东阳市| 吴桥县| 奇台县| 大渡口区| 大关县| 新巴尔虎右旗| 浠水县| 平乡县|