• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            熱轉印www.yxheatpress.com

            公司網站模板http://qiyemoban.software8.co/

            常用鏈接

            統計

            友情鏈接

            最新評論

            你所不知的private繼承

            在C++的類中有許多種繼承方式,而我們在軟件設計和編寫代碼時用得最多的就是public繼承,我們很少接觸到private繼承。但是我們在設計時真的有思考過什么時候應該用public繼承,什么時候不該使用public繼承,什么時候應該想想那些經常被我們遺忘的知識,讓我們從它們被遺忘的角落里重拾它的光芒。例如private繼承。

            As we all know,public繼承是塑模出一種is-a關系。什么是is-a的關系呢?Effective C++這樣描述:如果你令class D以public形繼承class B,那么每一個類型為D的對象同時也是一個類型為B的對象,反之不成立。意思是B比D表現出更一般化的概念,而D比B表現出更特殊化的概念。你主張“B對象可派上用場的地方,D對象一樣可以派上用場”,因為每一個D對象都是一種(是一個)B對象。反之如果你需要一個D對象,B對象無法效勞。
            還有就是我們喜歡用的virtual函數,即運行動態也是建立在public繼承之上的。
            在我剛學C++時,只知道private繼承,使繼承而來的成員(public成員和protected成員)都成為private,至于它有沒有什么更深一層的意義和作用就沒有去思考了,只是理想當然地把它認為是不想這些成員被它的以后的子類繼承。那private繼承到底意味著什么呢?
            先看看下面的代碼:
            class Person{...};
            class Student:private Person{...};
            void eat(const Person &p);
            Person p;
            Student s;
            eat(p);//正確
            eat(s);//錯誤
            再看看Effective C++的說法:
            如果classes之間的繼承關系是private,編譯器不會自動將一個deirved class對象轉換為一個base class對象。
            private繼承意味著implemented-in-terms-of(根據某物實現出)。如果你讓class D以private繼承class B,你的用意是為了采用class B內已經備妥的某些特性,不是因為B對象和D對象存在有任何觀念上的關系。private繼承純粹是一種實現技術,意味著只有實現部分被繼承,接口部分應該略去。如果D以private形式繼承B,意思是D對象根據B對象實現而得,private繼承在軟件設計層面上沒有意義,其意義只及于軟件實現層面。
            private有點has-a的感覺。它的意義與復合的意義相同。那我們的問題又產生了,什么時候用復合什么時候用private繼承?答案很簡單,盡可能使用復合。除了以下的2種情況:
            1、private繼承通常比復合的級別低。但是當derived class需要訪問protected base class的成員,或需要重新定義繼承而來的virtual函數時,就要用private繼承。
            2、private繼承可以造成empty class最優化。

            posted on 2012-10-22 09:53 不聽話的 閱讀(1234) 評論(1)  編輯 收藏 引用

            評論

            # re: 你所不知的private繼承 2012-10-22 10:00 溪流

            private繼承是種多余……個人意見  回復  更多評論   

            久久久久久曰本AV免费免费| 国产精品18久久久久久vr| 精品久久久无码中文字幕| 国产亚州精品女人久久久久久 | 精品综合久久久久久888蜜芽| 久久久久亚洲av无码专区喷水| 国内精品久久久久影院免费| 国产高潮久久免费观看| 一97日本道伊人久久综合影院| 浪潮AV色综合久久天堂| 精品国产乱码久久久久久浪潮| 一本一本久久a久久综合精品蜜桃| 97久久天天综合色天天综合色hd| 久久久久99精品成人片牛牛影视| 国产成人精品免费久久久久| 久久人人爽人人爽AV片| 久久亚洲国产欧洲精品一| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 精品蜜臀久久久久99网站| 免费精品久久久久久中文字幕| 午夜精品久久久久久久| 久久一区二区三区免费| 国产亚洲欧美成人久久片| 久久精品卫校国产小美女| 久久九色综合九色99伊人| 精品久久久久久亚洲| 久久亚洲国产成人精品性色| 一日本道伊人久久综合影| 韩国三级中文字幕hd久久精品 | 久久综合九色综合欧美狠狠| 久久精品国产亚洲av麻豆小说 | 亚洲精品无码久久毛片| 99久久婷婷国产综合精品草原| 国产情侣久久久久aⅴ免费| 久久福利资源国产精品999| 亚洲婷婷国产精品电影人久久| 免费一级做a爰片久久毛片潮| 国产免费久久精品丫丫| 久久精品一区二区三区中文字幕| 欧美精品一区二区精品久久| 久久婷婷国产麻豆91天堂|