• <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>
            posts - 34,comments - 2,trackbacks - 0
            //轉(zhuǎn)自網(wǎng)友博客、
            1、 
            派生類對象與普通類對象的相同之處在于,可以直接訪問該類的所有對象(包括this指針指向的對象和其他對象)的protected和private成員(包括其基類成員)。不同之處在于派生類對象只能訪問其對應(yīng)基類對象的protected成員(有隱式this指針傳遞),而不能訪問其基類的其他對象的protect成員,而普通類對象則也可以直接訪問該類所有對象的成員。
             
            2、 在C++中,基類指針只能訪問在該基類中被聲明(或繼承)的數(shù)據(jù)成員和成員函數(shù)(包括虛擬成員函數(shù)),而與它可能指向的實際對象無關(guān),所以如果需要用基類指針來訪問一個沒有在該基類中聲明但是又在其派生類中定義了的成員,則需要執(zhí)行dynamic_cast來完成從基類指針到派生類指針的安全向下轉(zhuǎn)換。把一個成員聲明為虛擬的,只推延了“在程序執(zhí)行期間根據(jù)指針指向的實際類類型,對于要調(diào)用實例的解析過程”
             
            3、 關(guān)于基類,派生類的相關(guān)補充:
            1、 派生表中指定的類必須先被定義好,方可被指定為基類。
            2、 派生類的前向聲明不能包括其派生表,而只需要類名即可。
            3、 缺省的繼承是private。
            4、 繼承而來的派生類的虛擬函數(shù)一般加上virtual較好,也可以省略。但基類中一定要聲明為virtual。
            5、 對于基類的靜態(tài)成員,所有派生類對象都引用基類創(chuàng)建的這個相同,單一,共享的靜態(tài)成員,而不是創(chuàng)建該派生類的另一個獨立的靜態(tài)成員。
            6、 友員關(guān)系不會被繼承,派生類沒有成為“向它的基類授權(quán)友誼的類”的友員。
             
            4、 繼承機制下,派生類對象的構(gòu)造函數(shù)(析構(gòu)函數(shù))調(diào)用順序為:
            1、 基類(子對象的)構(gòu)造函數(shù),若有多個基類,則以類派生表中出現(xiàn)的順序為序。
            2、 成員類對象的構(gòu)造函數(shù),若有多個成員類對象,則以它們在類定義中被聲明的順序為序。
            3、派生類自己的構(gòu)造函數(shù)。
            4、派生類對象的析構(gòu)函數(shù)的調(diào)用順序與它的構(gòu)造函數(shù)相反。繼承機制下,析構(gòu)函數(shù)的行為如下:派生類的析構(gòu)函數(shù)先被調(diào)用,再靜態(tài)調(diào)用基類的析構(gòu)函數(shù)(從直接基類開始)。注意一般基類的析構(gòu)函數(shù)不應(yīng)該是protected,因為虛擬函數(shù)承接了“調(diào)用者所屬類類型的訪問級別”。作為一般規(guī)則,我們建議將類層次結(jié)構(gòu)的根基類(聲明了一個或多個虛擬函數(shù))的析構(gòu)函數(shù)聲明為虛擬的。
             
            5、 關(guān)于繼承機制下基類構(gòu)造函數(shù)(析構(gòu)函數(shù))相關(guān)的幾點說明:
            1、 作為一般規(guī)則,派生類構(gòu)造函數(shù)應(yīng)不能直接向一個基類的數(shù)據(jù)成員賦值,而是要把值傳遞給適當?shù)幕悩?gòu)造函數(shù)來達到初始化賦值的目的。(一般是通過成員初始化表的方式)
            2、 若基類不用于創(chuàng)建對象,則最好將其構(gòu)造函數(shù)放在protect區(qū),只允許其派生類對象調(diào)用;若基類只允許創(chuàng)建某一個特定的派生類類型的對象,則應(yīng)該將基類的構(gòu)造函數(shù)放在private區(qū),并將此特定的派生類聲明為該基類的友元來達到目的。
            3、 派生類并不繼承基類的構(gòu)造函數(shù),每個派生類都必須提供自己的構(gòu)造函數(shù)集,派生類的構(gòu)造函數(shù)只能合法的調(diào)用其直接基類的構(gòu)造函數(shù)。(注意這里虛擬繼承提供了一個特例:虛擬基類的初始化變成了最終派生類的責任)。
             
            6、 關(guān)于虛擬函數(shù)的相關(guān)
            1、 必須使用指針或者引用來支持虛擬函數(shù)機制(面向?qū)ο蟪绦蛟O(shè)計),基類對象由于其靜態(tài)編譯,故不會保留派生類的類型身份。
            2、 第一次引入虛擬函數(shù)的基類時,必須在類體中將虛擬函數(shù)聲明為virtual,但若在該基類外部定義該虛擬函數(shù)時不能指定virtual。該基類的派生類中該虛擬函數(shù)virtual可加可不加,但從多重繼承考慮,最好加上。
            3、 派生類改寫的基類虛擬函數(shù),其原型必須與基類虛擬函數(shù)完全匹配(包括const和返回值),但返回值有個特例:派生類實例的返回值可以是基類實例返回類型的公有派生類類型。
            4、 純虛擬函數(shù)(聲明后緊跟=0,函數(shù)定義可寫可不寫)只是提供了一個可被其派生類改寫的接口,其本身不能通過虛擬機制被調(diào)用,但可以靜態(tài)調(diào)用(寫了函數(shù)定義的虛基類的純虛擬函數(shù))。一般來說,虛擬函數(shù)的靜態(tài)調(diào)用的目的是為了效率(避免動態(tài)綁定)。
            5、 包含(或繼承)了一個或多個純虛擬函數(shù)的類被編譯器識別為抽象基類,抽象基類不能用來創(chuàng)建獨立的類對象,只能作為子對象出現(xiàn)在后續(xù)的派生類中。
            6、通過基類指針來調(diào)用的虛擬函數(shù)的真正實例是在運行時刻確定的。但傳給虛擬函數(shù)的缺省實參是在編譯時刻根據(jù)被調(diào)用函數(shù)的對象的類型決定的(也即是若通過基類指針或引用調(diào)用派生類實例的虛擬函數(shù),則傳遞給它的缺省實參是由基類指定的)。
             
            7、 虛擬繼承和多繼承相關(guān):
            1、 虛擬繼承主要實為了解決繼承了多個基類實例,但是只需要一份單獨的共享實例的情況。
            2、 非虛擬派生中,派生類只能顯式的初始化其直接基類(即派生類只能調(diào)用其直接基類的構(gòu)造函數(shù)),而在虛擬派生中,虛擬基類的初始化變成了最終派生類的責任,這個最終派生類是由每個特定的類對象聲明來決定的,其非虛擬基類的初始化同非虛擬派生一樣,只能由其直接派生類完成。(即中間派生類的對于虛擬基類構(gòu)造函數(shù)的調(diào)用被抑制)。
            3、 虛擬繼承下構(gòu)造函數(shù)的調(diào)用順序按直接基類的聲明順序,對每個繼承子樹作深度優(yōu)先遍歷。第一步按此順序調(diào)用所有虛擬基類的構(gòu)造函數(shù);第二步按此順序調(diào)用非虛擬基類的構(gòu)造函數(shù)。析構(gòu)函數(shù)的調(diào)用順序與構(gòu)造函數(shù)相反。
            4、 虛擬基類成員的可視性,對于虛擬基類成員的繼承比該成員后來重新定義的實例權(quán)值(優(yōu)先級)小,故特化的派生類實例名覆蓋了共享的虛擬基類的實例名。而在非虛擬派生下的解析引用過程,每個繼承得到的實例都有相同的權(quán)值(優(yōu)先級)。
            5、 繼承下派生類的類域被嵌套在基類類域中,若一個名字在派生類域中沒有被解析出來,則編譯器在外圍基類域中查找該名字定義。在多繼承下,名字解析查找過程為先是在本類類域中查找,再對繼承子樹中的所有基類同時查找,每個繼承得到的實例都有相同的權(quán)值(優(yōu)先級)。若在兩個或多個基類子樹中都找到了該名字,則對其的使用是二義的。
            posted on 2011-09-30 16:18 Yu_ 閱讀(408) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
            国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 亚洲精品美女久久久久99| 欧美国产成人久久精品| 色婷婷综合久久久久中文字幕| 久久久综合香蕉尹人综合网| 老男人久久青草av高清| www.久久热.com| 亚洲欧洲久久av| 久久久久久狠狠丁香| 久久天天躁狠狠躁夜夜avapp| 久久久久久亚洲AV无码专区| 精品久久久久国产免费| 日日噜噜夜夜狠狠久久丁香五月| 国产成人精品久久一区二区三区| 日本精品久久久久中文字幕8| 欧美日韩精品久久久免费观看| 久久精品夜夜夜夜夜久久| 亚洲第一极品精品无码久久| 情人伊人久久综合亚洲| 狠狠综合久久综合88亚洲| 九九久久精品无码专区| 久久中文骚妇内射| 国产精品成人久久久| 久久99精品免费一区二区| 97久久精品午夜一区二区| 亚洲欧美伊人久久综合一区二区| 久久精品国产亚洲Aⅴ香蕉| 久久99热狠狠色精品一区| 日韩久久久久久中文人妻| 国产精品久久久香蕉| 久久久久亚洲AV成人网人人网站| 97精品伊人久久大香线蕉app| 国内精品久久久久久久久电影网 | 久久精品人人做人人爽电影蜜月| 久久久久亚洲av毛片大| 久久久久国产视频电影| 久久精品国产一区二区三区不卡 | 久久午夜电影网| 91精品国产91久久久久久| 岛国搬运www久久| 国产农村妇女毛片精品久久|