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

天下

記錄修行的印記

析構(gòu)函數(shù)virtual與非virtual區(qū)別

作為通常的原則,如果一個(gè)類定義了虛函數(shù),那么它的析構(gòu)函數(shù)就應(yīng)當(dāng)是virtual的。因?yàn)槎x了虛函數(shù)則隱含著:這個(gè)類會(huì)被繼承,并且會(huì)通過(guò)基類的指針指向子類對(duì)象,從而得到多態(tài)性。   這個(gè)類可能會(huì)被繼承,并且會(huì)通過(guò)基類的指針指向子類對(duì)象”,因此基類的析構(gòu)函數(shù)是否為虛將決定子類的對(duì)象是否被析構(gòu)。


很多時(shí)候你只能夠獲取基類指針,但卻不知道它實(shí)際是哪個(gè)子類,這時(shí)候刪除基類指針時(shí)虛析構(gòu)函數(shù)就很有用了。
#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的析構(gòu)函數(shù)不是virtual的,那么此時(shí)就不是先調(diào)用B的析構(gòu)函數(shù)再調(diào)用A的析構(gòu)函數(shù)。
輸出:
~A(); 

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

類如果會(huì)被派生的話,析構(gòu)函數(shù)一般都應(yīng)該定義為virtual的,主要不是防止內(nèi)存泄露,而是為了正確的析構(gòu)。如果是個(gè)封閉類(即不再被派生),就不要定義為virtual的。虛函數(shù)畢竟耗費(fèi)較大的。

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

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

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

評(píng)論

# re: 析構(gòu)函數(shù)virtual與非virtual區(qū)別 2010-12-23 17:11 陳梓瀚(vczh)

其實(shí)我認(rèn)為只要他的構(gòu)造函數(shù)和析構(gòu)函數(shù)是public的,或者有friend class,那么他就可以被繼承——所以析構(gòu)函數(shù)要虛。  回復(fù)  更多評(píng)論   

# re: 析構(gòu)函數(shù)virtual與非virtual區(qū)別 2010-12-23 17:13 陳梓瀚(vczh)

而且還有一個(gè),“如果你的析構(gòu)函數(shù)什么事也不作,從效果上來(lái)說(shuō),不聲明為virtual也無(wú)妨”是錯(cuò)的,應(yīng)該是:

如果所有子類的析構(gòu)函數(shù)什么都不做,而且他們的成員的析構(gòu)函數(shù)也都什么都不做的話,不聲明為virtual也無(wú)妨。其實(shí)跟你自己有沒(méi)有做什么是沒(méi)有關(guān)系的。  回復(fù)  更多評(píng)論   

<2016年1月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
31123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(4)

隨筆分類(378)

隨筆檔案(329)

鏈接

最新隨筆

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧洲一区二区在线观看| 一区二区三区免费看| 在线观看视频亚洲| 欧美成人精品1314www| 亚洲精品1区| 中文国产亚洲喷潮| 国产精品自在欧美一区| 欧美自拍偷拍| 最新日韩中文字幕| 亚洲欧美成人一区二区三区| 欧美日韩一区三区四区| 亚洲欧美日韩网| 欧美激情偷拍| 午夜激情亚洲| 亚洲电影免费观看高清| 欧美日韩国产色视频| 午夜在线精品偷拍| 亚洲国产一区二区视频| 欧美在线日韩在线| 亚洲精品国久久99热| 国产精品日韩久久久| 久久亚洲欧洲| 午夜久久福利| 亚洲欧洲午夜| 久久亚洲一区二区| 亚洲视频一二区| 亚洲国产三级| 国产日韩精品视频一区二区三区 | 校园春色国产精品| 永久域名在线精品| 欧美日韩视频第一区| 久久精品成人欧美大片古装| 亚洲毛片网站| 欧美刺激午夜性久久久久久久| 韩国成人理伦片免费播放| 欧美日韩精品免费看| 久久亚洲影院| 欧美呦呦网站| 亚洲自拍高清| 一区二区日韩伦理片| 亚洲第一在线视频| 久久一区国产| 欧美在线3区| 中文在线一区| 亚洲人成网站777色婷婷| 国产色综合久久| 国产精品入口尤物| 欧美日韩在线视频观看| 免费欧美日韩国产三级电影| 性欧美video另类hd性玩具| 中文日韩电影网站| 91久久久久久久久| 欧美黑人多人双交| 老司机精品视频网站| 欧美一区二区三区四区在线观看| 国产一区二区| 国产女同一区二区| 国产精品私拍pans大尺度在线 | 亚洲一区二区视频| 亚洲三级电影全部在线观看高清| 在线亚洲美日韩| 亚洲精品一区二区三区在线观看| 欧美日韩综合不卡| 欧美日韩国产a| 欧美日韩国产成人精品| 欧美高清视频一二三区| 欧美r片在线| 欧美成人午夜激情视频| 蜜桃视频一区| 免费在线观看成人av| 久色成人在线| 欧美成人精品高清在线播放| 欧美国产视频日韩| 欧美日韩美女在线| 欧美肉体xxxx裸体137大胆| 欧美日韩精品一本二本三本| 欧美日韩一区二区三| 国产精品久久久久久久久免费| 久久综合免费视频影院| 另类天堂av| 欧美经典一区二区三区| 欧美日韩午夜剧场| 国产精品免费小视频| 国产亚洲女人久久久久毛片| 国内精品久久国产| 亚洲欧洲日产国产网站| 夜夜嗨av一区二区三区四区| 亚洲欧美影院| 久久资源在线| 亚洲国产视频一区| 亚洲视频图片小说| 欧美一区二粉嫩精品国产一线天| 日韩视频免费观看| 亚洲欧美不卡| 久久漫画官网| 欧美日本乱大交xxxxx| 国产精品三级久久久久久电影| 欧美电影打屁股sp| 国产精品嫩草久久久久| 国产欧美一区二区三区国产幕精品 | 欧美11—12娇小xxxx| 欧美国产一区二区三区激情无套| 欧美一区二区三区在| 久久久久综合一区二区三区| 欧美ed2k| 国产三区精品| 日韩视频免费| 久久精品成人| 日韩视频在线观看一区二区| 性欧美xxxx大乳国产app| 欧美高清视频一二三区| 国产精品影音先锋| 亚洲精品少妇30p| 久久久久久91香蕉国产| 亚洲美女淫视频| 久久精品动漫| 国产精品久久久久久久久免费樱桃| 欧美日韩在线精品| 精品不卡一区二区三区| 亚洲综合成人婷婷小说| 欧美二区在线| 欧美一区免费视频| 欧美视频二区| 亚洲欧洲日本一区二区三区| 久久精品国产久精国产爱| 亚洲日本欧美| 久久三级福利| 国产精品中文字幕欧美| 一区二区黄色| 亚洲国产高清在线| 久久精彩视频| 国产精品综合色区在线观看| 99天天综合性| 欧美激情四色 | 亚洲国产高清一区二区三区| 亚洲欧美另类中文字幕| 欧美激情亚洲综合一区| 欧美一区二区三区四区高清| 欧美精品综合| 在线看视频不卡| 久久久国产精彩视频美女艺术照福利| 久久色中文字幕| 欧美一二区视频| 国产精品一区久久久| 亚洲尤物精选| 99热免费精品在线观看| 欧美高清视频在线播放| 亚洲高清不卡在线观看| 你懂的视频一区二区| 久久五月婷婷丁香社区| 激情丁香综合| 久久综合给合久久狠狠色| 欧美一区二区三区视频免费| 国产欧美一区二区精品忘忧草| 亚洲国产精品女人久久久| 久久久久免费视频| 久久精品理论片| 国产午夜精品美女毛片视频| 午夜在线电影亚洲一区| 午夜电影亚洲| 国产亚洲精品v| 久久深夜福利| 久久午夜视频| 亚洲精品中文字幕在线| 亚洲激情一区二区| 欧美精品一区二区三区在线播放| 国产人久久人人人人爽| 欧美在线观看视频在线| 亚洲欧美视频| 黄色av成人| 亚洲国产精品成人一区二区| 欧美黄色网络| 一区二区三区欧美亚洲| 亚洲精品免费网站| 欧美日韩亚洲一区二区三区| 亚洲私人影院| 亚洲欧美中文日韩v在线观看| 欧美国产三级| 亚洲欧美国产精品专区久久| 亚洲欧美另类在线| 国产欧美一区二区三区久久人妖 | 99精品欧美| 国产精品亚洲精品| 久久久国产一区二区| 久久久亚洲人| 国产精品日韩欧美一区二区三区| 亚洲国产成人porn| 亚洲精品久久久久久下一站| 欧美视频一区二区| 久久精品国产一区二区三区免费看| 亚洲毛片一区| 国产欧美一区二区三区在线老狼| 日韩亚洲欧美在线观看| 亚洲一区自拍| 亚洲国产日韩欧美在线图片| 日韩视频在线观看一区二区| 国产深夜精品| 亚洲美女性视频| 国语自产精品视频在线看一大j8| 欧美影视一区|