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

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

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

1.友元介紹

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

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

2.類友元

類友元(Friend Class):

  • 可以將一個類聲明為另一個類的友元。這樣,在被聲明為友元的類中,就可以直接訪問另一個類的私有成員。
  • 類友元關(guān)系在類之間共享數(shù)據(jù)或?qū)崿F(xiàn)特定功能時很有用。
  • 友元關(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)

  • 可以將一個函數(shù)聲明為一個類的友元函數(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é)

友元的使用場景包括但不限于以下情況:

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    平湖市| 如东县| 南宁市| 花垣县| 洱源县| 苏州市| 淅川县| 茂名市| 建水县| 双鸭山市| 桑日县| 云霄县| 米易县| 水富县| 新建县| 富阳市| 宁阳县| 尉氏县| 天祝| 灌阳县| 四子王旗| 蒙城县| 太保市| 镇康县| 工布江达县| 巴彦淖尔市| 绵阳市| 阿城市| 西盟| 南陵县| 天等县| 海原县| 保康县| 叙永县| 大余县| 越西县| 青神县| 秦安县| 隆回县| 台北市| 东乌珠穆沁旗|