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

            為生存而奔跑

               :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            積分與排名

            • 積分 - 330179
            • 排名 - 74

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            1、構(gòu)造函數(shù)不能是虛函數(shù)。因?yàn)闃?gòu)造函數(shù)不是一個(gè)普通的函數(shù),要構(gòu)造一個(gè)對(duì)象,構(gòu)造函數(shù)必須掌握所創(chuàng)建的對(duì)象的確切類型,因此構(gòu)造函數(shù)不能是虛的。
            2、析構(gòu)函數(shù)可以是虛函數(shù)。首先我們要搞清楚為什么要虛析構(gòu)函數(shù)?這樣做是為了當(dāng)用一個(gè)基類的指針刪除一個(gè)派生類的對(duì)象時(shí),派生類的析構(gòu)函數(shù)會(huì)被調(diào)用。也就是只有當(dāng)靜態(tài)類型為基類,而動(dòng)態(tài)類型為子類時(shí),為了確保子類的析構(gòu)函數(shù)能被調(diào)用,基類的析構(gòu)函數(shù)必須被聲明為虛析構(gòu)函數(shù)。
            一般情況下類的析構(gòu)函數(shù)里面都是釋放內(nèi)存資源,而析構(gòu)函數(shù)不被調(diào)用的話就會(huì)造成內(nèi)存泄漏。當(dāng)然,如果在析構(gòu)函數(shù)中做了其他工作的話,那你的所有努力也都是白費(fèi)力氣。
                當(dāng)然,并不是要把所有類的析構(gòu)函數(shù)都寫(xiě)成虛函數(shù)。因?yàn)楫?dāng)類里面有虛函數(shù)的時(shí)候,編譯器會(huì)給類添加一個(gè)虛函數(shù)表,里面來(lái)存放虛函數(shù)指針,這樣就會(huì)增加類的存儲(chǔ)空間。所以,只有當(dāng)一個(gè)類被用來(lái)作為基類的時(shí)候,才把析構(gòu)函數(shù)寫(xiě)成虛函數(shù)。
            3、純虛函數(shù)
            聲明純虛函數(shù)的方法:
            virtual void purefun()=0;
            聲明一個(gè)純虛函數(shù)pure virtual 的目的就是讓Derived class只繼承函數(shù)接口,因?yàn)樗鼪](méi)有定義。但是實(shí)際上是可以有一份Defualt定義的,在使用時(shí)需要指出類名。如:
            Derived->Base::Purefunction();
            注意含有純虛函數(shù)的類是不能被實(shí)例化的。如果Base類中有一個(gè)純虛函數(shù)purefun(),Derived繼承了Base后必須對(duì)purefun()進(jìn)行重寫(xiě),否則Derived也是一個(gè)函數(shù)純虛函數(shù)的類,同樣是不能被實(shí)例化的。
            4、virtual函數(shù)的缺省參數(shù)值是靜態(tài)綁定的,所以記住決不要重新定義繼承而來(lái)的virtual 函數(shù)的缺省參數(shù)值。
            #include<iostream>
            #include
            <algorithm>
            #include
            <string>
            #include
            <vector>
            #include
            <queue>
            #include
            <cmath>
            #include
            <map>
            using namespace std;
            class Base
            {
            public:
              
            virtual void display(int i =1)
              {
                 cout
            <<"Base Display"<<endl;
              }
            };
            class Derived :public Base
            {
            public:
              
            virtual void display(int i = 2)
              {
                 
            if(i  ==2)
                     cout
            <<"derived i==2"<<endl;
                 
            if(i == 1)
                     cout
            <<"derived i ==1"<<endl;
              }
            };
            int main()
            {
                Base
            * p=new Derived();
                p
            ->display();
            }
            輸出是"derived i==1"
            posted on 2009-08-31 16:57 baby-fly 閱讀(314) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)
            天天综合久久久网| 亚洲婷婷国产精品电影人久久| 狠狠久久综合| 久久精品人人做人人爽电影蜜月| 久久这里的只有是精品23| 丰满少妇人妻久久久久久4| 欧美激情精品久久久久久久| 久久97久久97精品免视看| 亚洲婷婷国产精品电影人久久| 日本精品久久久久影院日本 | 国产欧美久久久精品| 国产精品久久影院| 日韩一区二区三区视频久久| 噜噜噜色噜噜噜久久| 国产亚洲欧美成人久久片| 怡红院日本一道日本久久| 精品久久久久久久中文字幕 | 久久这里只精品99re66| 精品少妇人妻av无码久久| 久久久亚洲精品蜜桃臀 | 亚洲中文字幕久久精品无码APP| 久久亚洲私人国产精品| 日韩精品久久久肉伦网站| 久久精品国产亚洲av麻豆色欲 | 久久人人爽人人爽人人爽| 国产69精品久久久久久人妻精品| 久久青青草原国产精品免费| 国产成人香蕉久久久久| 久久久久无码精品国产| 亚洲精品高清一二区久久| 91久久福利国产成人精品| 亚洲国产精品无码久久久不卡| 国产精品久久婷婷六月丁香| 久久精品成人免费观看97| 91精品国产91热久久久久福利| 久久影院综合精品| 日批日出水久久亚洲精品tv| 成人国内精品久久久久影院VR| 国产成人精品久久亚洲| 狠狠色丁香婷婷久久综合不卡| 久久人人爽人人人人片av|