中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

細說C++的友元

發布時間:2020-07-03 15:29:10 來源:網絡 閱讀:6922 作者:BarnabyRoss 欄目:編程語言

為了把C++的友元講的通俗易懂,我就從這個地球上一種很神奇的生物——女人,說起。眾所周知,女生不愿意讓別人知道的兩個秘密,一個是年齡,另一個就是體重了(雖然已經知道很多年了,但是依然不懂,為什么女生不愿意讓別人知道她們的年齡和體重,這很重要嗎?)。現在,我們根據這一特性,來創建一個女朋友類。由于,女生不想要讓別人知道她們的年齡和體重,也就意味著,這兩個變量是private變量,這樣,外界就不能隨意訪問了。現在,開始創建這個類:

class Girlfriend{
private:
    int age;
    int weight;
    public:
    Girlfriend ( int age, int weight ){

        this->age = age;
        this->weight = weight;
    }
    int GetAge ( void ){

        return this->age;
    }
    int GetWeight ( void ){
        return this->weight;
    }

};

現在,我們已經有了“女朋友”這個類了。既然我們這些寫程序的碼畜沒有對象,那么我們就基于這個類,來創建一個對象。

Girlfriend Alice;

現在,我們已經有一個對象了,叫Alice。
比如,我們現在其他人想要知道Alice的年齡,體重,看一下,她同意嗎?

printf ( "Alice's age is %d\n", Alice.age );
printf ( "Alice's weight is %d]n", Alice.weight );

運行之后,我們發現,
細說C++的友元
程序報錯了。當然會報錯,你以為你是誰,想知道她體重就知道她體重,想知道她年齡就知道她年齡,別做夢了,她是不會告訴你的。
但是,難道就真的不能直接得到她的年齡嗎?當然不是,她是我創建出來的對象,那么我就是她男朋友,既然是她男朋友,我理應可以直接知道她的年齡和體重。嘿嘿!
所以,現在,來寫一個,boyfriend函數。

void boyfriend ( const Grilfriend& girlfriend );

現在,有了這個全局函數,我們就可以訪問了吧。來試一下:
細說C++的友元
很不幸,竟然連自己的男朋友都不可以訪問女友的體重和年齡,這也太過分了吧。怎么可以這樣呢?可是,仔細一想,天底下男人這么多,你是她男友,那是因為得到了她的同意的,如果她不同意,你怎么可能能夠成為她男友,所以,你現在還得通過她的同意。那么怎么做呢?就是用friend。在Girlfriend這個類內聲明這個boyfriend這個函數為友元函數。

friend void boyfriend ( const Girlfriend& girlfriend );

在類內聲明這個友元函數之后,我們在類外實現就行了。代碼如下:

void boyfriend ( const Girlfriend& girlfriend ){
    printf ( "my girlfriend's old is %d\n", girlfriend.age );
    printf ( "my girlfriend's weight is %d\n", girlfriend.weight );
}

在主函數中,我們創建了Alice這個對象并對她進行初始化

Girlfriend Alice( 20, 105 );

現在,我作為男友,要訪問我女友Alice的年齡體重,只要,

boyfriend( Alice );

這樣以來,就可以了。
現在,讓我們看一下,運行結果:
細說C++的友元
啊,看來作為男友還是有這點權利的。

完整代碼如下:

#include <stdio.h>
#include <stdlib.h>

class Girlfriend{
private:
    int weight;
    int age;
public:
    Girlfriend ( int weight, int age ){
        this->weight = weight;
        this->age = age;
    }
    int GetWeight ( void ){
        return this->weight;
    }
    int GetAge ( void ){
        return this->age;
    }
    friend void  boyfriend ( Girlfriend& girlfriend );
};
void boyfriend ( Girlfriend& girlfriend ){

    printf ( "my girlfriend's weight is %d\n", girlfriend.weight );
    printf ( "my girlfriend's age is %d\n", girlfriend.age );
}
int main ( int argc, char** argv ){
    Girlfriend Alice( 105, 20 );
    //printf ( "my girfriend Alice's weight is %d\n", Alice.weight );
    //printf ( "my girfriend Alice's age is %d\n", Alice.age );
    boyfriend( Alice );

    system ( "pause" );
    return 0;
}

PS:這篇文章,我覺得已經寫的比較的通俗易懂了,希望看完這篇文章的小伙伴們,各位大佬們,能順手點個贊,表示支持。謝謝!


歡迎打賞!哈哈哈哈!
細說C++的友元

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

灵丘县| 永川市| 广饶县| 天峻县| 治多县| 靖远县| 蓬莱市| 孝昌县| 白山市| 澎湖县| 荆门市| 中超| 湘乡市| 土默特左旗| 六枝特区| 石门县| 合江县| 大丰市| 砚山县| 芜湖市| 金沙县| 丰原市| 广平县| 平原县| 鄄城县| 大冶市| 余姚市| 邳州市| 遂昌县| 长治市| 时尚| 桂林市| 德兴市| 锦州市| 白朗县| 怀集县| 浙江省| 阿拉尔市| 自贡市| 宜春市| 临沧市|