日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

C++中友元类使用场合

發(fā)布時(shí)間:2024/8/5 综合教程 49 生活家
生活随笔 收集整理的這篇文章主要介紹了 C++中友元类使用场合 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在C++中我們可以將函數(shù)定義成類的友元函數(shù),這樣在函數(shù)中就可以訪問類的私有成員。與函數(shù)相同,類也可以作為另一個(gè)類的友元類,在友元類中可以訪問另外一個(gè)類的所有成員。
聲明友元類的方法很簡單,只需在類中寫下如下語句:

friend class 類名;

接下來我們看一個(gè)案例,假如我們需要設(shè)計(jì)一個(gè)模擬電視機(jī)和遙控器的程序,代碼如下。


#include <iostream>
using namespace std;

class TV
{
private:
    enum{on,off};
    enum{minvol,maxvol=100};
    enum{minchn,maxchn=40};
    bool on_off;
    int volume;
    int channel;
public:
    TV():on_off(off),volume(20),channel(3){};
    //打印屬性
    void print_tv_info()
    {
        cout<<"on_off:"<<on_off<<endl;
        cout<<"volume:"<<volume<<endl;
        cout<<"channel:"<<channel<<endl;
    }
    //此處將TVController類聲明為TV類的友元類
    friend class TVController;
};

class TVController
{
public:
    void set_status(TV& t){t.on_off = (t.on_off == t.on ? t.off : t.on);}
    bool volume_up(TV& t);
    bool volume_down(TV& t);
    bool channel_up(TV& t);
    bool channel_down(TV& t);
};
//TVController 函數(shù)定義
bool TVController::volume_up(TV& t)
{
    if(t.volume < t.maxvol)
    {
        t.volume++;
        return true;
    }
    return false;
}
bool TVController::volume_down(TV& t)
{
    if(t.volume > t.minvol)
    {
            t.volume--;
            return true;
    }
    return false;
}
bool TVController::channel_up(TV& t)
{
    if(t.channel < t.maxchn)
    {
        t.channel ++;
        return true;
    }
    return false;
}
bool TVController::channel_down(TV& t)
{
    if(t.channel > t.minchn)
    {
        t.channel --;
        return true;
    }
    return false;
}
int main(int argc,char* argv[]) {
    TV mytv;
    TVController ctl;
    ctl.set_status(mytv);
    ctl.volume_down(mytv);
    ctl.channel_up(mytv);
    mytv.print_tv_info();

    return 0;
}

我們定義了一個(gè)TV類和TVController分別表示電視機(jī)和遙控器。在電視機(jī)類有一些常用的屬性,如:開關(guān)、頻道、音量。我們分別用on_off、volume、channel變量表示;在遙控器類(TVController)中我們聲明了以下方法來控制電視類:

    //開關(guān)電視機(jī)
    void set_status(TV& t){t.on_off = (t.on_off == t.on ? t.off : t.on);}
    //增大音量
    bool volume_up(TV& t);
    //減小音量
    bool volume_down(TV& t);
    //加頻道
    bool channel_up(TV& t);
    //減頻道
    bool channel_down(TV& t);

在這些方法中我們都需要訪問TV類的成員變量,有兩種方法,第一種是把TV類的成員變量都聲明為public,但是這種做法顯然不符合面向?qū)ο缶幊汤砟畹摹A硪环N是為每個(gè)屬性增加set,get方法(例如:set_channel,get_channel),TVController類中對TV類的屬性訪問比較頻繁,這樣做代碼會(huì)顯得特別冗余,邏輯也不直觀。
這時(shí)我們就需要將TVController類聲明為TV類的友元類,具體做法是在TV類的聲明中添加友元類的聲明語句:

friend class TVController;

在main函數(shù)中我們定義TV類的對象mytv初始值為{on_off:1,volume:20,channel:5}和TVController 類的對象ctl,通過ctl對象的方法改變mytv對象的屬性值。
執(zhí)行程序輸出:

on_off:0
volume:19
channel:4

總結(jié)

以上是生活随笔為你收集整理的C++中友元类使用场合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕在线观看三区 | 91国内精品久久久 | 激情综合网站 | 久久偷看各类女兵18女厕嘘嘘 | 色婷婷国产精品视频 | 96久久精品 | 午夜黄色影院 | 欧美精品一区二区三区四区五区 | 久久一区精品 | 尤物av在线 | 午夜精品少妇 | 黄色大片视频网站 | 欧美日韩在线不卡 | 亚洲欲妇 | 日韩视频一区二区三区在线播放免费观看 | 日韩欧美在线不卡 | 国产精品视频久久久 | 欧美日韩一区二区三区国产精品成人 | 日韩福利视频一区 | 亚洲人av在线 | 久久久久久久久久国产精品 | 91毛片网| av手机在线看 | 久草视频在线免费播放 | 精品网站999www | 久久国产精品波多野结衣 | 专干中国老太婆hd | 在线观看免费黄色 | 免费视频毛片 | 中国黄色一级视频 | 一区二区在线免费 | 久久免费视屏 | 成人免费视频国产免费 | 美国式禁忌1980 | 一级片中文 | www亚洲色图| 乱人伦av| 女生下面流水视频 | 蜜桃av噜噜一区二区三区小说 | 二区三区在线观看 | 日韩精品视频在线看 | 久久国产一区二区三区 | 色四虎 | 男人天堂成人 | 免费看av毛片 | 久久久精品小视频 | 成人三级视频 | 亚洲小视频在线 | www.亚洲一区 | 国产精品久久久国产盗摄 | 无码专区久久综合久中文字幕 | 亚洲av无一区二区三区怡春院 | 久久福利小视频 | 天天网综合 | 久久不卡日韩美女 | 不卡的在线视频 | 这里只有精品在线播放 | 国产欧美日韩综合精品一区 | 天海翼av在线播放 | 91在线观看喷潮 | 欧美激情精品久久久久久蜜臀 | 亚洲国产精品久久 | 日韩在线精品 | 国产男女猛烈无遮挡免费观看网站 | 高清在线一区二区三区 | 九一网站在线观看 | 中文字幕av无码一区二区三区 | 三级在线观看网站 | 大陆熟妇丰满多毛xxxⅹ | 波多野结衣一区二区三区 | 色诱久久av | 影音先锋波多野结衣 | 中文字幕精品一区久久久久 | 在线观看免费人成视频 | 懂色av蜜臀av粉嫩av分享吧最新章节 | 亚洲理伦电影 | 成人免费视频国产在线观看 | 国产又黄又猛的视频 | 乳揉みま痴汉4在线播放 | 性xxxx| 欧美性xxxxx极品娇小 | 在线观看国产免费视频 | 国产一区二区三区在线免费观看 | 免费网站在线高清观看 | 久久网一区二区 | 日韩精品一区二区免费视频 | 激情综合六月 | 中文字幕 欧美日韩 | 亚洲欧洲成人精品久久一码二码 | 粗喘呻吟撞击猛烈疯狂 | 国产三级在线观看完整版 | 欧美专区 日韩专区 | 精品成人一区二区三区久久精品 | 国产91精品一区 | 久久久久久91香蕉国产 | 国产精品日韩欧美一区二区三区 | 伊人毛片 | 性欧美大战久久久久久久免费观看 | 中文字幕日韩精品无码内射 |