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

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 327124
            • 排名 - 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 閱讀(301) 評論(0)  編輯 收藏 引用 所屬分類: 技術
            久久精品国产亚洲7777| 久久精品国产精品亚洲毛片| 新狼窝色AV性久久久久久| 狠狠人妻久久久久久综合蜜桃| 久久久av波多野一区二区| 色综合久久久久综合体桃花网| 久久精品国产男包| 亚洲精品美女久久久久99小说| 久久久精品久久久久久 | 精品无码人妻久久久久久| 久久99国产综合精品免费| 欧洲人妻丰满av无码久久不卡| 色综合久久久久久久久五月| 久久久亚洲AV波多野结衣| 欧美亚洲国产精品久久高清| 中文字幕无码久久人妻| 亚洲AV日韩AV永久无码久久| 国产A级毛片久久久精品毛片| 亚洲综合日韩久久成人AV| 色婷婷综合久久久久中文一区二区| 中文国产成人精品久久不卡| 久久国产精品一国产精品金尊| 99久久婷婷免费国产综合精品| 日本精品久久久中文字幕| 国产精品va久久久久久久| 亚洲国产日韩欧美久久| 亚洲精品乱码久久久久久蜜桃不卡| 久久久一本精品99久久精品66| 国产成人精品综合久久久| 亚洲国产综合久久天堂| 欧美va久久久噜噜噜久久| 成人a毛片久久免费播放| 久久精品亚洲乱码伦伦中文| 久久久久av无码免费网| 一级做a爰片久久毛片16| 久久综合鬼色88久久精品综合自在自线噜噜 | 无码任你躁久久久久久老妇| 亚洲午夜久久久久久久久电影网| 国产午夜精品久久久久免费视| 久久国产高清一区二区三区| 午夜精品久久久久久久|