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

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 328427
            • 排名 - 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 閱讀(308) 評論(0)  編輯 收藏 引用 所屬分類: 技術
            国产精品久久免费| 久久精品夜夜夜夜夜久久| 久久亚洲精品国产精品| 色妞色综合久久夜夜| 久久久久人妻一区精品色| 久久久久一区二区三区| 久久精品这里只有精99品| 久久精品国产清自在天天线| 久久丫精品国产亚洲av不卡| 久久se这里只有精品| 久久成人国产精品免费软件| 久久91综合国产91久久精品| 久久国内免费视频| 精品午夜久久福利大片| 亚洲色欲久久久久综合网| 精品久久久久久国产| 国产精品VIDEOSSEX久久发布| 久久久WWW免费人成精品| 久久最新精品国产| 青青草原精品99久久精品66| 99久久精品无码一区二区毛片| 国内精品免费久久影院| 丁香狠狠色婷婷久久综合| 一本色道久久88综合日韩精品 | 精品久久久久中文字| 久久婷婷五月综合国产尤物app| 国产成人精品久久综合| 精品精品国产自在久久高清| 欧美一区二区久久精品| 久久国产亚洲精品| 亚洲国产视频久久| 久久精品国产只有精品66| 精品久久久久久无码国产| 91亚洲国产成人久久精品| 久久国产乱子伦精品免费强| 久久综合给合久久国产免费| 久久精品国产免费观看三人同眠| 久久亚洲中文字幕精品一区四 | 无码任你躁久久久久久| 久久天天躁狠狠躁夜夜av浪潮 | 久久久亚洲AV波多野结衣|