青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天下

記錄修行的印記

析構函數virtual與非virtual區別

作為通常的原則,如果一個類定義了虛函數,那么它的析構函數就應當是virtual的。因為定義了虛函數則隱含著:這個類會被繼承,并且會通過基類的指針指向子類對象,從而得到多態性。   這個類可能會被繼承,并且會通過基類的指針指向子類對象”,因此基類的析構函數是否為虛將決定子類的對象是否被析構。


很多時候你只能夠獲取基類指針,但卻不知道它實際是哪個子類,這時候刪除基類指針時虛析構函數就很有用了。
#include <iostream>
using namespace std;
struct A
{
    A(){cout 
<< "A::()"<<endl;}
    
virtual ~A() {cout<<"~A()\n";}
};

struct B: public A
{
    B(){cout 
<< "B::()"<<endl;}
    
~B() {cout<<"~B()\n";}
};

int main()
{
    A
* p = new B;
    delete p;
    
//B b;
    return 0;
}


如果 A的析構函數不是virtual的,那么此時就不是先調用B的析構函數再調用A的析構函數。
輸出:
~A(); 

如果A   的析構函數為virtual,則先~B(),再~A()  
輸出:
~B();
~A();

類如果會被派生的話,析構函數一般都應該定義為virtual的,主要不是防止內存泄露,而是為了正確的析構。如果是個封閉類(即不再被派生),就不要定義為virtual的。虛函數畢竟耗費較大的。

不用virtual 的幾種情況:
  1、作為非公有基類。僅作為   private   base   class   使用的   class   不需要使用虛擬析構函數  
  2、不作為接口使用的基類。  
  3.   如果你可以保證這個類不被public繼承(private/protected繼承的話,在非friend函數/類中就無法用基類指針指向派生類了)  
  4.   如果它的所有派生類(包括派生類的派生類)的析構函數都是trivial的(這里的trivial指的是在程序員的層次什么事也不做)  
  5.   如果不需要用基類的指針指向派生類的對象  
  在這五種情況下,不把析構函數聲明為virtual都是可以的,何況效率會高一些——但前提是你得保證前提的成立——不過這些保證常常是很難100%的:誰能保證別人在派生你的類的時候,析構函數是trivial的,或者別人不用你提供的基類的指針指向派生類對象?這些常常是很難得到保證的。  

聲明基類的析構函數為virtual并非總是為了防止memory   leak   另外這也只是作為一般的原則(基類中有虛函數則把其析構函數聲明為virtual)。如果你的析構函數什么事也不作,從效果上來說,不聲明為virtual也無妨

posted on 2010-12-23 15:04 天下 閱讀(2205) 評論(2)  編輯 收藏 引用 所屬分類: C/C++

評論

# re: 析構函數virtual與非virtual區別 2010-12-23 17:11 陳梓瀚(vczh)

其實我認為只要他的構造函數和析構函數是public的,或者有friend class,那么他就可以被繼承——所以析構函數要虛。  回復  更多評論   

# re: 析構函數virtual與非virtual區別 2010-12-23 17:13 陳梓瀚(vczh)

而且還有一個,“如果你的析構函數什么事也不作,從效果上來說,不聲明為virtual也無妨”是錯的,應該是:

如果所有子類的析構函數什么都不做,而且他們的成員的析構函數也都什么都不做的話,不聲明為virtual也無妨。其實跟你自己有沒有做什么是沒有關系的。  回復  更多評論   

<2012年2月>
2930311234
567891011
12131415161718
19202122232425
26272829123
45678910

導航

統計

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲网站在线播放| 亚洲午夜精品17c| 欧美日韩亚洲视频一区| 久久久夜夜夜| 久久一综合视频| 久久人人九九| 欧美激情一区二区在线| 欧美日韩午夜激情| 国产欧美精品一区| 国产一区二区久久久| 永久免费毛片在线播放不卡| 伊人蜜桃色噜噜激情综合| 亚洲国产视频一区二区| 一本久道久久久| 久久久www成人免费毛片麻豆| 免费人成网站在线观看欧美高清| 亚洲大胆人体视频| 一二三区精品福利视频| 欧美一区二区啪啪| 欧美日韩亚洲一区二区三区在线 | 亚洲一区二区三区精品在线| 亚洲精品影院| 欧美成人免费观看| 午夜精品一区二区三区在线视| 久久影音先锋| 99视频在线观看一区三区| 久久亚洲精品网站| 一区二区三区在线观看视频| 亚洲一区三区视频在线观看| 亚洲国产精品成人久久综合一区| 久久精品1区| 狠狠爱综合网| 美女视频网站黄色亚洲| 欧美一级欧美一级在线播放| 国产麻豆精品theporn| 新67194成人永久网站| 亚洲女优在线| 在线精品观看| 亚洲精品视频在线观看网站| 欧美日韩中文字幕在线视频| 亚洲欧美激情四射在线日 | 亚洲网址在线| 国产精品成人一区二区| 欧美一区观看| 久久综合九色欧美综合狠狠| 亚洲欧洲精品一区二区三区不卡 | 亚洲日本电影| 欧美日韩国产亚洲一区| 欧美一区二区三区日韩视频| 玖玖综合伊人| 亚洲欧美日韩国产一区二区三区| 亚洲图片欧洲图片av| 永久555www成人免费| 亚洲人成网站999久久久综合| 国产精品入口尤物| 免费av成人在线| 国产精品国产一区二区| 久久免费视频在线| 国产精品久久久久一区二区| 美女国产一区| 国产精品视频福利| 亚洲精品影视| 一区二区三区四区五区精品| 久久精品123| 久久青草久久| 国产免费亚洲高清| 中文在线一区| 亚洲一区二区三区激情| 欧美日本中文| 一区二区三区四区五区精品| 亚洲精品免费观看| 欧美日韩小视频| 中文欧美在线视频| 欧美一区二区三区视频在线| 欧美视频精品在线观看| 亚洲一区二区三区中文字幕在线 | 国产精品毛片a∨一区二区三区|国 | 欧美在线不卡| 国内自拍一区| 久久嫩草精品久久久精品一| 欧美成人精品影院| 9色国产精品| 国产一区二区成人久久免费影院| 亚洲一区二区在线免费观看视频| 午夜精品视频网站| 亚洲国产日韩一级| 国产精品免费看片| 欧美成人精品一区| 亚洲影院在线观看| 久久精品一本| 亚洲欧美日韩国产中文在线| 韩国三级电影一区二区| 欧美日韩免费观看一区三区| 欧美一区免费| 在线视频一区二区| 欧美www在线| 久久精品成人一区二区三区蜜臀| 91久久精品国产91久久| 国产欧美一区二区精品婷婷| 欧美va天堂| 久久免费视频这里只有精品| 亚洲欧美日韩国产一区二区三区 | 国产精品免费视频观看| 毛片av中文字幕一区二区| 亚洲欧美日韩国产另类专区| 亚洲免费福利视频| 亚洲免费电影在线观看| 亚洲黑丝一区二区| 亚洲国产网站| 亚洲人成网站在线播| 欧美激情女人20p| 欧美寡妇偷汉性猛交| 免费成人在线视频网站| 国产一区二区三区观看| 欧美日韩国产三级| 欧美日韩亚洲另类| 国产人成精品一区二区三| 国产欧美一区二区精品仙草咪 | 免费观看亚洲视频大全| 久久深夜福利| 欧美日韩免费观看一区=区三区| 欧美大色视频| 国产精品久久777777毛茸茸| 国产精品一区2区| 激情久久综合| 亚洲欧美日本日韩| 欧美成人激情在线| 亚洲天天影视| 免费日本视频一区| 国产婷婷色综合av蜜臀av| 亚洲日本免费| 久久婷婷国产综合尤物精品| 欧美激情精品久久久久久黑人| 亚洲一区二区免费在线| 欧美成人精品高清在线播放| 国产一区二区三区丝袜| 亚洲少妇最新在线视频| 欧美成人免费网站| 久久精品国产亚洲5555| 国产精品理论片| 亚洲欧美综合v| 亚洲一区bb| 国产伦精品一区二区三区高清| 亚洲午夜av| 亚洲综合不卡| 国产在线日韩| 欧美在线视频观看免费网站| 在线亚洲观看| 国产欧美一区视频| 久久久成人精品| 欧美专区在线播放| 亚洲激情在线视频| 亚洲欧洲一区二区在线播放| 欧美精品久久久久久久| 一区二区欧美激情| 99热免费精品| 亚洲一区二区三区中文字幕| 国产精品日韩专区| 久久精品夜色噜噜亚洲aⅴ| 久久精品99| 亚洲一级特黄| 亚洲三级国产| 欧美在线播放一区| 亚洲伦伦在线| 欧美一区二区女人| 亚洲色诱最新| 久久午夜电影| 久久黄色小说| 欧美三级日本三级少妇99| 久久久久久一区二区三区| 欧美高清视频在线| 免费高清在线一区| 国产三级精品在线不卡| 亚洲黄色有码视频| 亚洲第一天堂av| 亚欧美中日韩视频| 午夜精品久久久久久久久久久| 欧美成在线视频| 欧美激情精品久久久久久免费印度 | 欧美日产在线观看| 欧美激情精品久久久六区热门| 国产精品h在线观看| 欧美激情一区二区三区在线视频| 国产日韩一区二区| 亚洲一区久久| 性色av一区二区三区在线观看| 欧美久久久久中文字幕| 欧美大片一区二区| 亚洲人成7777| 欧美紧缚bdsm在线视频| 亚洲日韩第九十九页| 一区二区三区精品国产| 欧美日韩一级黄| 午夜精品一区二区三区电影天堂 | 欧美综合国产| 国产欧美日韩专区发布| 久久精品国产亚洲一区二区三区 | 久久婷婷综合激情| 精品成人国产| 欧美日韩日韩|