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

            為生存而奔跑

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 330192
            • 排名 - 74

            最新評論

            閱讀排行榜

            評論排行榜

            1、構造函數不能是虛函數。因為構造函數不是一個普通的函數,要構造一個對象,構造函數必須掌握所創建的對象的確切類型,因此構造函數不能是虛的。
            2、析構函數可以是虛函數。首先我們要搞清楚為什么要虛析構函數?這樣做是為了當用一個基類的指針刪除一個派生類的對象時,派生類的析構函數會被調用。也就是只有當靜態類型為基類,而動態類型為子類時,為了確保子類的析構函數能被調用,基類的析構函數必須被聲明為虛析構函數。
            一般情況下類的析構函數里面都是釋放內存資源,而析構函數不被調用的話就會造成內存泄漏。當然,如果在析構函數中做了其他工作的話,那你的所有努力也都是白費力氣。
                當然,并不是要把所有類的析構函數都寫成虛函數。因為當類里面有虛函數的時候,編譯器會給類添加一個虛函數表,里面來存放虛函數指針,這樣就會增加類的存儲空間。所以,只有當一個類被用來作為基類的時候,才把析構函數寫成虛函數。
            3、純虛函數
            聲明純虛函數的方法:
            virtual void purefun()=0;
            聲明一個純虛函數pure virtual 的目的就是讓Derived class只繼承函數接口,因為它沒有定義。但是實際上是可以有一份Defualt定義的,在使用時需要指出類名。如:
            Derived->Base::Purefunction();
            注意含有純虛函數的類是不能被實例化的。如果Base類中有一個純虛函數purefun(),Derived繼承了Base后必須對purefun()進行重寫,否則Derived也是一個函數純虛函數的類,同樣是不能被實例化的。
            4、virtual函數的缺省參數值是靜態綁定的,所以記住決不要重新定義繼承而來的virtual 函數的缺省參數值。
            #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) 評論(0)  編輯 收藏 引用 所屬分類: 技術
            青青草原综合久久| 一本色道久久88综合日韩精品| 亚洲中文字幕久久精品无码喷水| 午夜精品久久久久久99热| 9191精品国产免费久久| 性做久久久久久久久浪潮| 久久精品国产亚洲AV无码麻豆| www亚洲欲色成人久久精品| 国产aⅴ激情无码久久| 国产—久久香蕉国产线看观看| 久久这里只有精品首页| 久久精品国产99久久久香蕉 | 99精品国产在热久久无毒不卡 | 一级做a爰片久久毛片人呢| 国产69精品久久久久APP下载| 久久99国产精品99久久| 久久精品aⅴ无码中文字字幕不卡| 国产精品99久久久久久www| 久久av无码专区亚洲av桃花岛| 久久免费大片| 成人精品一区二区久久| 精品国产福利久久久| 婷婷久久香蕉五月综合加勒比| 一级女性全黄久久生活片免费| 91秦先生久久久久久久| 久久se精品一区精品二区| 久久精品国产亚洲AV香蕉| 伊人久久综合精品无码AV专区| 99久久免费国产精品特黄| 欧美成a人片免费看久久| 久久久久97国产精华液好用吗| 色综合久久中文综合网| 色成年激情久久综合| 国产免费福利体检区久久| 久久久久久A亚洲欧洲AV冫| 精品欧美一区二区三区久久久| 久久精品中文字幕第23页| 久久久WWW成人| 久久福利资源国产精品999| 久久久这里有精品| 久久青青草原精品国产|