久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 關于C++中的虛析構函數
關于C++中的虛析構函數
時間:2017-01-05作者:華(hua)清遠見

《effective C++》中的條款14:確(que)定基類(lei)有虛析構函數。也就(jiu)是說,如果某個類(lei)要作為(wei)基類(lei)來使用,一(yi)般使用虛析構函數。看下面(mian)的例(li)子:

class A{
        public:
                A(){
                        strA = new char[10]; 
                        strcpy(strA, "abc");
                }
                virtual ~A(){
                cout<<"~A() " <<strA<<endl;        delete []strA;
                }
        private:
                char* strA;
    &nbsp;   };

class B: public A
        {
        public:
                B(){
                        strB = new char[10]; 
                        strcpy(strB, "def"); 
                }
                ~B(){
                        cout<<"~B() " <<strB<<endl;
                        delete []strB;
                }
         private: 
                char* strB;
     &nbsp;  };

測試:

A *p = new B; delete p;

代(dai)碼的(de)輸出(chu)結(jie)果:

~A()

我(wo)們發(fa)現B類的析構函數沒有(you)調用,導致內存(cun)泄露(lu)。(因為動態編(bian)譯(yi),在運行時會檢查(cha)有(you)無派生類對(dui)象重(zhong)載本函數,有(you)則調用之。)

當我們可能通過(guo)基類指針(zhen)刪(shan)除派(pai)生類對象(xiang)(xiang)時,并(bing)且被析構的(de)對象(xiang)(xiang)是有重要(yao)(yao)的(de)析構函數的(de)派(pai)生類的(de)對象(xiang)(xiang),就需要(yao)(yao)讓基類的(de)析構函數成為虛擬的(de)。

當一個類(lei)不準(zhun)備作為基類(lei)使(shi)用(yong)時,使(shi)析構(gou)函(han)(han)數為虛(xu)(xu)函(han)(han)數一般是個壞主意。因為當類(lei)里面有虛(xu)(xu)函(han)(han)數的時候(hou),編(bian)譯(yi)器會(hui)給類(lei)添加一個虛(xu)(xu)函(han)(han)數表,里面來(lai)存(cun)放虛(xu)(xu)函(han)(han)數指針(zhen),這樣就會(hui)增加類(lei)的存(cun)儲空間。所以,只有類(lei)要作為基類(lei)來(lai)使(shi)用(yong)時,才(cai)把(ba)析構(gou)函(han)(han)數寫成(cheng)虛(xu)(xu)函(han)(han)數。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)