• <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>

            隨筆 - 25, 文章 - 0, 評(píng)論 - 6, 引用 - 0
            數(shù)據(jù)加載中……

            區(qū)分重載(overload),覆蓋(Override)和隱藏(hide)

            轉(zhuǎn)自 http://blog.csdn.net/jixingzhong/article/details/1858943 

            重載overload,這個(gè)概念是大家熟知的。在同一可訪問區(qū)內(nèi)被聲名的幾個(gè)具有不同參數(shù)列的(參數(shù)的類型、個(gè)數(shù)、順序不同)同名函數(shù),程序會(huì)根據(jù)不同的參數(shù)列來確定具體調(diào)用哪個(gè)函數(shù),這種機(jī)制就是重載。重載不關(guān)心函數(shù)的返回值類型,即返回類型不同無法構(gòu)成重載。此外,C++ 中的const成員函數(shù)也可以構(gòu)成overload。
                總結(jié)一下重載的特征:
              1、處在相同的空間中,即相同的范圍內(nèi);
              2、函數(shù)名相同;
              3、參數(shù)不同,即參數(shù)個(gè)數(shù)不同,或相同位置的參數(shù)類型不同;
              4、const成員函數(shù)可以和非const成員函數(shù)形成重載;
                    5、virtual關(guān)鍵字、返回類型對(duì)是否夠成重載無任何影響。


                覆蓋override,是指派生類中存在重新定義的函數(shù),其函數(shù)名、參數(shù)列、返回值類型必須同父類中的相對(duì)應(yīng)被覆蓋的函數(shù)嚴(yán)格一致,覆蓋函數(shù)和被覆蓋函數(shù)只有函數(shù)體(花括號(hào)中的部分)不同,當(dāng)派生類對(duì)象調(diào)用子類中該同名函數(shù)時(shí)會(huì)自動(dòng)調(diào)用子類中的覆蓋版本,而不是父類中的被覆蓋函數(shù)版本,這種機(jī)制就叫做覆蓋,特征是:       
                    1、不同的范圍(分別位于派生類與基類);       
                    2、函數(shù)名字相同;       
                    3、參數(shù)相同;       
                    4、基類函數(shù)必須有virtual關(guān)鍵字。  

             

            針對(duì)上述兩個(gè)概念,還有一個(gè)隱藏hide。所謂的隱藏,指的是派生類類型的對(duì)象、指針、引用訪問基類和派生類都有的同名函數(shù)時(shí),訪問的是派生類的函數(shù),即隱藏了基類的同名函數(shù)。隱藏規(guī)則的底層原因其實(shí)是C++的名字解析過程。在繼承機(jī)制下,派生類的類域被嵌套在基類的類域中。派生類的名字解析過程如下:
              1、首先在派生類類域中查找該名字。
              2、如果第一步中沒有成功查找到該名字,即在派生類的類域中無法對(duì)該名字進(jìn)行解析,則編譯器在外圍基類類域?qū)Σ檎以撁值亩x。
                總結(jié)一下隱藏的特征:
                    1、如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有無virtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。       
                    2、如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有virtual關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆)。 

            posted on 2013-03-08 17:29 chenjt3533 閱讀(284) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++

            久久99精品国产麻豆婷婷| 久久热这里只有精品在线观看| 97精品伊人久久大香线蕉app| 久久亚洲国产中v天仙www| 日韩AV毛片精品久久久| 国产美女久久久| 精品久久久久久久国产潘金莲| 久久精品国产亚洲欧美| 欧美久久久久久| 国产高清美女一级a毛片久久w| 久久久久国产精品人妻| 国产成人综合久久久久久| 欧美喷潮久久久XXXXx| 久久久久亚洲av成人无码电影 | yellow中文字幕久久网| 久久久久亚洲av成人网人人软件 | 久久夜色精品国产| 久久99国产精一区二区三区| 中文字幕久久久久人妻| 日本精品久久久久久久久免费| 国产91色综合久久免费| 精品一二三区久久aaa片| 日本高清无卡码一区二区久久| 国产精品午夜久久| 久久精品www| 青青草国产精品久久久久| 久久亚洲AV成人无码国产 | 久久99精品免费一区二区| 久久99精品久久久久子伦| 国产成人精品三上悠亚久久| 久久亚洲国产精品成人AV秋霞 | 久久国产高清一区二区三区| 久久青青草原综合伊人| 大香网伊人久久综合网2020| 天天久久狠狠色综合| 99久久精品费精品国产| 91精品国产91热久久久久福利| 九九99精品久久久久久| 亚洲欧美精品伊人久久| 久久99国产一区二区三区| 久久久久久久亚洲精品|