<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    so true

    心懷未來,開創(chuàng)未來!
    隨筆 - 160, 文章 - 0, 評(píng)論 - 40, 引用 - 0
    數(shù)據(jù)加載中……

    operator new和operator delete學(xué)習(xí)總結(jié)

    operator new和operator delete學(xué)習(xí)總結(jié)
    這塊內(nèi)容很多很多,那就撿幾個(gè)重要的地方說說吧,主要目的是為了在遺忘的時(shí)候給自己提個(gè)醒,呵呵。
    1。new和delete的重載函數(shù)都是static函數(shù),你可以在聲明的時(shí)候?qū)懮先ィ部梢圆粚懀ň幾g器自動(dòng)為你添加),但是事實(shí)是無法更改的,它們都是static的。
    2。new和delete必須形式上配對(duì),且里面做的內(nèi)容也要配對(duì)
    void* operator new(size_t size, const char*, int);//調(diào)用形式為new("wokao",34) ;
    void operator delete(void *p, const char*, int);//這個(gè)delete與上面的那個(gè)new配對(duì)
    void operator delete(void *p, size_t, const char*, int)//這個(gè)delete與上面的那個(gè)new不配對(duì)
    3。new和delete的標(biāo)準(zhǔn)形式是:
    void* operator new(size_t size);
    void operator delete(void* p);
    或void operator delete(void* p,size_t size);//這個(gè)delete可以驗(yàn)證if( sizeof(X)!=size )
    4。new可以被重載出其他的樣式來;而delete重載時(shí),如果有其他樣式出現(xiàn),那是為了配合new的新樣式,與此同時(shí)也必須得有標(biāo)準(zhǔn)的delete樣式,因?yàn)槲覀冏詈骴elete *p的時(shí)候調(diào)用的是標(biāo)準(zhǔn)的delete樣式,而那個(gè)非標(biāo)準(zhǔn)的只是為了在構(gòu)造函數(shù)拋出異常時(shí)讓系統(tǒng)調(diào)用與新樣式的new配套的新樣式的delete。
    5。只有基類的析構(gòu)函數(shù)被聲明為virtual時(shí)(如果你沒有在基類中寫析構(gòu)函數(shù)而是利用默認(rèn)的或者即便寫了卻忘了加virtual都是不可以的),才可以通過基類的指針(實(shí)則指向子類)來delete,達(dá)到調(diào)用子類delete的目的。
    6。不論你重載不重載,本質(zhì)上new都是調(diào)用::operator new(size)這個(gè)全局函數(shù)來分配恰當(dāng)?shù)膬?nèi)存空間,可以在調(diào)用new之前通過set_new_handler函數(shù)來設(shè)置配置內(nèi)存失敗的回調(diào)函數(shù)。
    7。new重載函數(shù)中的size至少是1,即便類沒有任何成員變量。
    8。new的順序:new->基類的構(gòu)造函數(shù)(在進(jìn)入基類構(gòu)造函數(shù)之前當(dāng)然需要先根據(jù)初始化列表來初始化基類的部分成員變量)->子類的構(gòu)造函數(shù)(在進(jìn)入基類構(gòu)造函數(shù)之前當(dāng)然需要先根據(jù)初始化列表來初始化基類的部分成員變量)
    9。delete的順序:子類的析構(gòu)函數(shù)->基類的析構(gòu)函數(shù)->delete
    10。重載new運(yùn)算符時(shí)最好要讓標(biāo)準(zhǔn)的new的調(diào)用形式露出來
    void* operator new(size_t size,char*);void* operator new(size_t size);
    或void* operator new(size_t size,char* =NULL);
    11。寫一個(gè)new,就最好寫一個(gè)與之配套的delete。
    12。對(duì)于new[]和delete[]的重載,也完全沒啥區(qū)別,就是換了個(gè)名稱,除此之外,再無其他特別之處了。

    posted on 2008-07-13 19:58 so true 閱讀(2673) 評(píng)論(1)  編輯  收藏 所屬分類: C&C++

    評(píng)論

    # re: operator new和operator delete學(xué)習(xí)總結(jié)  回復(fù)  更多評(píng)論   

    這塊的知識(shí)好零碎啊!謝謝你總結(jié)的這么清楚這么詳細(xì)!期待你的下篇文章!
    2008-07-14 21:43 | pig
    主站蜘蛛池模板: 在线观看亚洲专区| 免费91最新地址永久入口| 精品国产亚洲一区二区在线观看| 美女无遮挡拍拍拍免费视频| 亚洲第一成年网站大全亚洲| 国产精品成人四虎免费视频| A级毛片高清免费视频在线播放| 亚洲女人初试黑人巨高清| 免费国产一级特黄久久| 欧洲精品99毛片免费高清观看| 亚洲中文字幕无码中文字| 亚洲中文无韩国r级电影 | 99热在线日韩精品免费| 亚洲性色成人av天堂| 亚洲视频在线免费| 成年免费大片黄在线观看岛国| 国产VA免费精品高清在线| 亚洲av无码久久忘忧草| 亚洲综合精品香蕉久久网| 无码人妻久久一区二区三区免费丨| 成在线人直播免费视频| 国产色在线|亚洲| 亚洲AV福利天堂一区二区三| 永久免费视频v片www| 57pao一国产成永久免费| 中国黄色免费网站| 亚洲另类自拍丝袜第五页| 久久久久亚洲AV片无码下载蜜桃| 亚洲 另类 无码 在线| 久久久www成人免费毛片| 久9这里精品免费视频| yy一级毛片免费视频| 亚洲AV香蕉一区区二区三区| 亚洲av无码专区在线| 4480yy私人影院亚洲| 国产亚洲精品精华液| 亚洲精品网站在线观看不卡无广告| 无码免费午夜福利片在线| 最近免费中文字幕大全免费版视频| 中国一级特黄高清免费的大片中国一级黄色片 | 国产一区二区三区无码免费|