一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

雞啄米:C 編程入門系列之三十七(繼承與派生:派生類對(duì)基類成員的訪問(wèn)控制之公有繼承)

 yidiantou 2017-08-03

       在編程入門系列上一講中雞啄米講了派生類從基類繼承的過(guò)程,其中提到了通過(guò)繼承方式可以控制對(duì)從基類繼承的成員的訪問(wèn)屬性,這一講主要講解公有繼承方式怎樣控制訪問(wèn)屬性。

       前面說(shuō)過(guò),派生類從基類繼承時(shí)有三個(gè)步驟,第一個(gè)步驟是吸收基類成員,吸收了基類中除構(gòu)造函數(shù)和析構(gòu)函數(shù)之外的所有數(shù)據(jù)成員函數(shù)成員,第二個(gè)步驟就是修改基類成員,包括修改對(duì)基類成員的訪問(wèn)屬性和覆蓋基類成員,第三個(gè)步驟是添加新成員。第二個(gè)步驟中修改對(duì)基類成員的訪問(wèn)屬性可以通過(guò)派生類的繼承方式控制。

      類的成員有public(公有)、protected(保護(hù))和private(私有)三種訪問(wèn)屬性。類的繼承方式也有public(公有繼承)、protected(保護(hù)繼承)和private(私有繼承)三種。派生類通過(guò)不同的繼承方式可以獲得對(duì)基類成員的不同的訪問(wèn)屬性。派生類對(duì)基類成員的訪問(wèn)主要有兩種,一種是派生類的新增成員對(duì)繼承的基類成員的訪問(wèn),另一種是派生類的對(duì)象對(duì)繼承的基類成員的訪問(wèn)。下面會(huì)詳細(xì)講。

       雞啄米這里插一句本應(yīng)屬于“類成員的訪問(wèn)控制”中的話,通過(guò)對(duì)象訪問(wèn)類的成員屬于外部訪問(wèn),只能訪問(wèn)類的公有成員。

       派生類的繼承方式為public,即公有繼承時(shí),對(duì)基類中的公有成員和保護(hù)成員的訪問(wèn)屬性都不變,而對(duì)基類的私有成員則不能訪問(wèn)。具體說(shuō),就是基類的公有成員和保護(hù)成員被繼承到派生類中以后同樣成為派生類的公有成員和保護(hù)成員,派生類中新增成員對(duì)他們可以直接訪問(wèn),派生類的對(duì)象只能訪問(wèn)繼承的基類公有成員。但是派生類的新增成員和派生類的對(duì)象都不能訪問(wèn)基類的私有成員。

雞啄米:C++編程入門系列之三十七(繼承與派生:派生類對(duì)基類成員的訪問(wèn)控制之公有繼承)

       雞啄米給大家寫一個(gè)公有繼承的簡(jiǎn)單例子:

       #include<>iostream>
        using namespace std;
        class Base            // 基類Base的聲明
        {
         public:               // 公有成員函數(shù)
                void SetTwo(int a, int b)  { x=a; y=b; }
                 int GetX()   { return x; }
                int GetY()   { return y; }
       private:              // 私有數(shù)據(jù)成員
                int x;
                int y;
       };
        class Child : public Base    // 派生類的聲明,繼承方式為公有繼承
        {
        public:                      // 新增公有成員函數(shù)
                void SetThree(int a, int b, int c)  { SetTwo(a, b); z=c; }
                int GetZ()   { return z; }
        private:                     // 新增私有數(shù)據(jù)成員
                int z;
       };
        int main()
        {
               Child child;           // 聲明Child類的對(duì)象
               child.SetThree(1, 2, 3); // 設(shè)置派生類的數(shù)據(jù)
               cout< 'the="" data="" of=""><>
               cout<><><><><><>
               return 0;
        }

       程序運(yùn)行結(jié)果是:

       The data of child:
       1,2,3

       上面的程序聲明了一個(gè)基類Base,又聲明了Base類的派生類Child,最后是主函數(shù)部分。派生類Child從基類Base中繼承了除構(gòu)造函數(shù)析構(gòu)函數(shù)外的所有數(shù)據(jù)成員和函數(shù)成員,這些再加上派生類Child的新增成員就組成了Child類的全部。類Child的繼承方式為公有繼承,基類Base的所有公有成員在派生類Child中的訪問(wèn)屬性不變,都可以直接訪問(wèn),所以Child類的SetThree函數(shù)可以直接調(diào)用Base類的SetTwo函數(shù)。基類公有成員SetTwo、GetX和GetY都變成了Child類外部接口的一部分。但是上面說(shuō)過(guò),派生類不能訪問(wèn)基類的私有成員,所以Child類不能訪問(wèn)Base類的x和y。

       主函數(shù)中首先定義了派生類Child的對(duì)象child,然后通過(guò)對(duì)象child調(diào)用了派生類Child的新增公有函數(shù)SetThree和GetZ,還調(diào)用了從基類Base繼承的公有成員函數(shù)GetX和GetY。

       通過(guò)這個(gè)例子,派生類對(duì)基類成員的兩種訪問(wèn)方式:派生類的新增成員對(duì)繼承的基類成員的訪問(wèn)和通過(guò)派生類的對(duì)象對(duì)繼承的基類成員的訪問(wèn),都講到了。

       因?yàn)檫@部分訪問(wèn)屬性控制的內(nèi)容比較重要而且需要慢慢理解,雞啄米后面再單獨(dú)講保護(hù)繼承和私有繼承,大家慢慢領(lǐng)會(huì)。有問(wèn)題歡迎到雞啄米博客留言討論。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    国产韩国日本精品视频| 亚洲美女国产精品久久| 日韩欧美国产亚洲一区| 熟女乱一区二区三区四区| 最新69国产精品视频| 少妇人妻无一区二区三区| 亚洲最新的黄色录像在线| 日韩成人动作片在线观看| 亚洲精品国男人在线视频| 中文字幕亚洲精品人妻| 肥白女人日韩中文视频| 色狠狠一区二区三区香蕉蜜桃| 色综合伊人天天综合网中文| 久久天堂夜夜一本婷婷| 香蕉久久夜色精品国产尤物| 九九热精品视频在线观看| 欧美日韩黑人免费观看| 又色又爽又黄的三级视频| 精品久久av一二三区| 欧美日不卡无在线一区| 亚洲一区二区精品久久av| 亚洲精品国产第一区二区多人| 99视频精品免费视频| 精品人妻一区二区四区| 久久精品亚洲情色欧美| 亚洲国产精品久久网午夜| 冬爱琴音一区二区中文字幕| 国产91麻豆精品成人区| 国产精品一区二区视频| 亚洲欧美日韩在线中文字幕| 中文精品人妻一区二区| 亚洲伦片免费偷拍一区| 亚洲第一区二区三区女厕偷拍| 亚洲第一香蕉视频在线| 国产丝袜美女诱惑一区二区| 亚洲欧美视频欧美视频| 熟女乱一区二区三区丝袜| 男人的天堂的视频东京热| 少妇视频一区二区三区| 精品高清美女精品国产区| 国产传媒一区二区三区|