欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++深入探究友元使用

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

友元

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

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

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

特點(diǎn)

不具有對稱性: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ù)友元

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

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ù)體中訪問對象的成員,必須用對象名加運(yùn)算符“.”加對象成員名。但友元函數(shù)可以訪問類中的所有成員,一般函數(shù)只能訪問類中的公有成員。

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

3.某類的友元函數(shù)的作用域并非該類作用域。如果該友元函數(shù)是另一類的成員函數(shù),則其作用域?yàn)榱硪活惖淖饔糜?,否則與一般函數(shù)相同。

類友元

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

類中的所以成員,共有,保護(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)文章

  • C++性能剖析教程之循環(huán)展開

    C++性能剖析教程之循環(huán)展開

    這篇文章主要給大家介紹了關(guān)于C++性能剖析教程之循環(huán)展開的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • C++實(shí)現(xiàn)不能被繼承的類實(shí)例分析

    C++實(shí)現(xiàn)不能被繼承的類實(shí)例分析

    這篇文章主要介紹了C++實(shí)現(xiàn)不能被繼承的類實(shí)例分析,對于C++初學(xué)者而言可以通過本文實(shí)例更好的理解類的原理及運(yùn)用,需要的朋友可以參考下
    2014-08-08
  • 常用C/C++預(yù)處理指令詳解

    常用C/C++預(yù)處理指令詳解

    預(yù)處理指令提供按條件跳過源文件中的節(jié)、報(bào)告錯(cuò)誤和警告條件,以及描繪源代碼的不同區(qū)域的能力。使用術(shù)語“預(yù)處理指令”只是為了與 C 和 C++ 編程語言保持一致。在 C# 中沒有單獨(dú)的預(yù)處理步驟;預(yù)處理指令按詞法分析階段的一部分處理。
    2014-11-11
  • C語言實(shí)現(xiàn)簡單五子棋小游戲

    C語言實(shí)現(xiàn)簡單五子棋小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡單五子棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • C++自定義數(shù)據(jù)類型方法詳情

    C++自定義數(shù)據(jù)類型方法詳情

    這篇文章主要介紹了C++自定義數(shù)據(jù)類型方法詳情,總結(jié)了兩種方法,分別是typedef聲明和枚舉類型enum,相關(guān)內(nèi)容需要的小伙伴可以參考下面文章內(nèi)容,希望對你的學(xué)習(xí)有所幫助
    2022-03-03
  • C++入門指南之貪吃蛇游戲的實(shí)現(xiàn)

    C++入門指南之貪吃蛇游戲的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于C++入門指南之貪吃蛇游戲?qū)崿F(xiàn)的相關(guān)資料,文章通過示例代碼介紹的非常詳細(xì),可以讓大家能短時(shí)間內(nèi)寫出一個(gè)貪吃蛇,需要的朋友可以參考下
    2021-10-10
  • C++ 先對數(shù)組排序,在進(jìn)行折半查找

    C++ 先對數(shù)組排序,在進(jìn)行折半查找

    以下小編就為大家介紹兩種實(shí)現(xiàn)方法。第一種方法是,選擇排序法+循環(huán)折半查找法。第二種方法是,冒泡排序法+遞歸折半查找法。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • 從使用角度解讀c++20 協(xié)程示例

    從使用角度解讀c++20 協(xié)程示例

    類比線程,線程是個(gè)函數(shù),把這個(gè)函數(shù)交給 創(chuàng)建線程的api,然后這個(gè)函數(shù)就變成線程了,這個(gè)函數(shù)本身沒有任何特殊的地方,就是普通函數(shù),這篇文章主要介紹了從使用角度解讀c++20 協(xié)程示例,需要的朋友可以參考下
    2023-01-01
  • c++常量詳解

    c++常量詳解

    常量是存放固定且不可變值的,一旦確定初始值則在程序其它地方不可改變, 所以const對象必須初始化。常量一般使用const關(guān)鍵字來修飾
    2017-06-06
  • C++三色球問題描述與算法分析

    C++三色球問題描述與算法分析

    這篇文章主要介紹了C++三色球問題描述與算法分析,結(jié)合注釋形式詳細(xì)講述了三色球問題的描述與相應(yīng)的算法設(shè)計(jì)思路,并給出了相關(guān)的實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-05-05

最新評論