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

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 326800
            • 排名 - 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 閱讀(300) 評論(0)  編輯 收藏 引用 所屬分類: 技術
            久久久精品午夜免费不卡| 久久天天躁狠狠躁夜夜不卡| 亚洲乱码中文字幕久久孕妇黑人| 久久精品一区二区三区AV| 久久免费的精品国产V∧| 国产99久久精品一区二区| 久久av免费天堂小草播放| 久久这里都是精品| 99麻豆久久久国产精品免费| 久久亚洲国产精品123区| 久久婷婷五月综合成人D啪| 成人综合伊人五月婷久久| 久久精品亚洲男人的天堂| 国产精品久久久久蜜芽| 麻豆精品久久精品色综合| 久久精品无码免费不卡| av午夜福利一片免费看久久| 伊人久久亚洲综合影院| 国产国产成人久久精品| 欧美噜噜久久久XXX| 亚洲人成网站999久久久综合| 国产精品久久久久天天影视| 久久婷婷人人澡人人爽人人爱| 国产精品伊人久久伊人电影 | 91精品国产综合久久香蕉| 伊人久久大香线蕉精品不卡| 国产一区二区精品久久凹凸| 久久久久久人妻无码| 久久久久久精品无码人妻| 亚洲欧美国产精品专区久久| 久久午夜福利电影| 久久国产精品免费| 久久精品国产99久久丝袜 | 久久午夜无码鲁丝片午夜精品| 精品精品国产自在久久高清| 久久精品人人做人人妻人人玩| 久久精品卫校国产小美女| 久久亚洲sm情趣捆绑调教| 久久久久久精品久久久久| 久久人人爽人人爽人人片AV高清| 伊人久久国产免费观看视频|