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

C++深入探究友元使用

 更新時間:2022年07月01日 10:39:34   作者:編程小程  
采用類的機制后實現(xiàn)了數(shù)據(jù)的隱藏與封裝,類的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類與外界間的通信接口。但是,有時需要定義一些函數(shù),這些函數(shù)不是類的一部分,但又需要頻繁地訪問類的數(shù)據(jù)成員,這時可以將這些函數(shù)定義為該類的友元函數(shù)

友元

友元 friend 機制允許一個類授權(quán)其他的函數(shù)訪問它的非公有成員.

友元聲明以關(guān)鍵字 friend 開頭 ,它只能出現(xiàn)在類的聲明中, 它們不受其在類體中的 public private 和
protected 區(qū)的影響.

友元分為外部函數(shù)友元, 成員函數(shù)友元,類友元。

特點

不具有對稱性:A 是 B 的友元, 并不意味著 B 是A的友元

不具有傳遞性:A是B的友元, B是C的友元, 但A不是C的友元。

不具有繼承性: Base 類型繼承 Object類型, 如果Object 類型是A的友元,但Base類型不是A友元。

外部函數(shù)友元

示例

需要在類中進(jìn)行對其進(jìn)行聲明,則可以訪問類的所有成員

class Int
{
int value;
public:
Int(int x = 0):value(x)
{
cout<<"Create Int: "<<this<<endl;
}
~Int(){ cout<<"Destroy Int: "<<this<<endl;}
friend void Print(const Int &it); // 注冊為類的友元函數(shù)
};
void Print(const Int &it)
{
cout<<it.value<<endl;
}
int main()
{
Int a(10);
Print(a);
return 0;
}

成員函數(shù)友元

將一個成員函數(shù)聲明成友元的時,必須要指明該成員函數(shù)屬于哪個類:

class Object; // 類的聲明
class Int
{
friend void Object::Print(const Int &it); // 注冊為成員函數(shù)友元
private:
int value;
public:
Int(int x = 0):value(x){ cout<<"Create Int: "<<this<<endl;}
~Int(){ cout<<"Destroy Int: "<<this<<endl;}
};
class Object
{
public:
void Print(const Int &it)
{
cout<<it.value<<endl;
}
};
int main()
{
Int a(10);
Object obj;
obj.Print(a);
return 0;
}

總結(jié)

1.友元函數(shù)不是類的成員函數(shù),在函數(shù)體中訪問對象的成員,必須用對象名加運算符“.”加對象成員名。但友元函數(shù)可以訪問類中的所有成員,一般函數(shù)只能訪問類中的公有成員。

2.友元函數(shù)不受類中的訪問權(quán)限關(guān)鍵字限制,可以把它放在類的公有、私有、保護(hù)部分,但結(jié)果一樣。

3.某類的友元函數(shù)的作用域并非該類作用域。如果該友元函數(shù)是另一類的成員函數(shù),則其作用域為另一類的作用域,否則與一般函數(shù)相同。

類友元

整個類可以是另一個類的友元。友元類的每個成員函數(shù)都是另一個類的友元函數(shù),都可訪問另一個

類中的所以成員,共有,保護(hù)或私有數(shù)據(jù)成員

class Object; // 類的聲明
class Int
{
friend class Object; // 注冊為類友元
private:
int value;
public:
Int(int x = 0):value(x){ cout<<"Create Int: "<<this<<endl;}
~Int(){ cout<<"Destroy Int: "<<this<<endl;}
};
class Object
{
public:
void Print(const Int &it)
{
cout<<it.value<<endl;
}
};
int main()
{
Int a(10);
Object obj;
obj.Print(a);
return 0;
}

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

相關(guān)文章

  • OpenGL實現(xiàn)中點劃線法

    OpenGL實現(xiàn)中點劃線法

    這篇文章主要為大家詳細(xì)介紹了OpenGL實現(xiàn)中點劃線法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語言實現(xiàn)二叉樹遍歷的迭代算法

    C語言實現(xiàn)二叉樹遍歷的迭代算法

    這篇文章主要介紹了C語言實現(xiàn)二叉樹遍歷的迭代算法,包括二叉樹的中序遍歷、先序遍歷及后序遍歷等,是非常經(jīng)典的算法,需要的朋友可以參考下
    2014-09-09
  • C語言實題講解快速掌握單鏈表上

    C語言實題講解快速掌握單鏈表上

    單鏈表是后面要學(xué)的雙鏈表以及循環(huán)鏈表的基礎(chǔ),要想繼續(xù)深入了解數(shù)據(jù)結(jié)構(gòu)以及C語言,我們就要奠定好這塊基石!接下來就和我一起學(xué)習(xí)吧
    2022-04-04
  • C++野指針和懸空指針的實現(xiàn)方法

    C++野指針和懸空指針的實現(xiàn)方法

    野指針和懸空指針是指針中常見的兩個概念,本文詳細(xì)的介紹了這兩種的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • C語言數(shù)組實現(xiàn)打磚塊游戲

    C語言數(shù)組實現(xiàn)打磚塊游戲

    這篇文章主要為大家詳細(xì)介紹了C語言數(shù)組實現(xiàn)打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • 詳解C語言之緩沖區(qū)溢出

    詳解C語言之緩沖區(qū)溢出

    緩沖區(qū)是一塊連續(xù)的計算機內(nèi)存區(qū)域,可保存相同數(shù)據(jù)類型的多個實例。緩沖區(qū)可以是堆棧、堆和靜態(tài)數(shù)據(jù)區(qū)。在C/C++語言中,通常使用字符數(shù)組和malloc/new實現(xiàn)緩沖區(qū)。溢出指數(shù)據(jù)被添加到分配給該緩沖區(qū)的內(nèi)存塊之外。緩沖區(qū)溢出是最常見的程序缺陷
    2021-06-06
  • C++超細(xì)致講解隊列queue的使用

    C++超細(xì)致講解隊列queue的使用

    隊列先進(jìn)先出,即只能在容器的末尾添加新元素,只能從頭部移除元素,下面這篇文章主要給大家介紹了關(guān)于C++中隊列queue用法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 利用C++實現(xiàn)通訊錄管理系統(tǒng)的完整代碼

    利用C++實現(xiàn)通訊錄管理系統(tǒng)的完整代碼

    通訊錄是一個可以記錄親人、好友信息的工具,下面這篇文章主要給大家介紹了關(guān)于利用C++實現(xiàn)通訊錄管理系統(tǒng)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • C++?RAII在HotSpot?VM中的重要應(yīng)用解析

    C++?RAII在HotSpot?VM中的重要應(yīng)用解析

    RAII技術(shù)被認(rèn)為是C++中管理資源的最佳方法,進(jìn)一步引申,使用RAII技術(shù)也可以實現(xiàn)安全、簡潔的狀態(tài)管理,編寫出優(yōu)雅的異常安全的代碼,這篇文章主要介紹了C++?RAII在HotSpot?VM中的重要應(yīng)用,需要的朋友可以參考下
    2023-09-09
  • 通過示例詳解C++智能指針

    通過示例詳解C++智能指針

    這篇文章主要為大家通過示例介紹了C++智能指針的使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03

最新評論

灵璧县| 浮山县| 逊克县| 腾冲县| 斗六市| 崇文区| 咸阳市| 香港 | 贵港市| 青川县| 宜城市| 石城县| 阜南县| 白城市| 沈阳市| 金秀| 广汉市| 安徽省| 卢湾区| 井陉县| 晋宁县| 韶山市| 清原| 礼泉县| 涡阳县| 思南县| 兴山县| 清涧县| 茌平县| 苗栗县| 杭州市| 舞阳县| 江川县| 阿克陶县| 胶南市| 朝阳市| 黄冈市| 砚山县| 呼图壁县| 上虞市| 南平市|