classClxBase{public:ClxBase(){std::cout<<"clx_basehasbeencreated"<

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

虛析構(gòu)函數(shù)的使用

系統(tǒng) 1673 0

面試時(shí)被問到了虛析構(gòu)函數(shù)的使用,特此記錄

?

首先我們寫兩個(gè)類:

      #ifndef CLX_H
#define CLX_H

#include <iostream>

class ClxBase {
public:
	ClxBase() {std::cout << "clx_base has been created" << std::endl;}
	virtual ~ClxBase() {std::cout << "clx_base has been destroyed" << std::endl;}
	virtual void dosomething() {std::cout << "clx_base dosomething..." << std::endl;}
};

class ClxDerived : public ClxBase {
public:
	ClxDerived() {std::cout << "clx_derived has been created" << std::endl;}
	~ClxDerived(){std::cout << "clx_derived has been destroyed" << std::endl;}
	void dosomething() {std::cout << "clx_derived dosomething..." << std::endl;}
};

#endif
    

?

指明了,父類的析構(gòu)函數(shù)是虛類型。

?

調(diào)用代碼:

      ClxBase *clx = new ClxDerived;
clx->dosomething();
delete clx;
    

?

運(yùn)行結(jié)果如下:

虛析構(gòu)函數(shù)的使用
?

注意類加載時(shí)的順序和析構(gòu)的順序是剛好相反的。析構(gòu)是總是從子類開始,然后再回收父類,符合編程要求。

?

如果將父類中規(guī)定的虛類型去掉,即

      class ClxBase {
public:
	ClxBase() {std::cout << "clx_base has been created" << std::endl;}
	~ClxBase() {std::cout << "clx_base has been destroyed" << std::endl;}
	virtual void dosomething() {std::cout << "clx_base dosomething..." << std::endl;}
};
    

這樣,只會(huì)執(zhí)行基類的析構(gòu)函數(shù),而派生類的析構(gòu)函數(shù)不會(huì)執(zhí)行。 相當(dāng)于沒有重載。

運(yùn)行效果如下:

虛析構(gòu)函數(shù)的使用
?

當(dāng)基類的析構(gòu)函數(shù)為虛函數(shù)時(shí),無論指針指的是同一類族中的哪一個(gè)類對(duì)象,系統(tǒng)會(huì)采用動(dòng)態(tài)關(guān)聯(lián),調(diào)用相應(yīng)的析構(gòu)函數(shù),對(duì)該對(duì)象進(jìn)行清理工作。

如果將基類的析構(gòu)函數(shù)聲明為虛函數(shù)時(shí),由該基類所派生的所有派生類的析構(gòu)函數(shù)也都自動(dòng)成為虛函數(shù),即使派生類的析構(gòu)函數(shù)與基類的析構(gòu)函數(shù)名字不相同。

最好把基類的析構(gòu)函數(shù)聲明為虛函數(shù)。這將使所有派生類的析構(gòu)函數(shù)自動(dòng)成為虛函數(shù)。這樣,如果程序中顯式地用了delete運(yùn)算符準(zhǔn)備刪除一個(gè)對(duì)象,而delete運(yùn)算符的操作對(duì)象用了指向派生類對(duì)象的基類指針,則系統(tǒng)會(huì)調(diào)用相應(yīng)類的析構(gòu)函數(shù)。

虛析構(gòu)函數(shù)的概念和用法很簡單,但它在面向?qū)ο蟪绦蛟O(shè)計(jì)中卻是很重要的技巧。

專業(yè)人員一般都習(xí)慣聲明虛析構(gòu)函數(shù),即使基類并不需要析構(gòu)函數(shù),也顯式地定義一個(gè)函數(shù)體為空的虛析構(gòu)函數(shù),以保證在撤銷動(dòng)態(tài)分配空間時(shí)能得到正確的處理。

構(gòu)造函數(shù)不能聲明為虛函數(shù)。這是因?yàn)樵趫?zhí)行構(gòu)造函數(shù)時(shí)類對(duì)象還未完成建立過程,當(dāng)然談不上函數(shù)與類對(duì)象的綁定。

?

虛析構(gòu)函數(shù)的使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 在线播放人成午夜免费视频 | 青草娱乐极品免费视频 | 日日爽夜夜爽 | 久久久国产高清 | 亚洲国产一区二区三区四区 | 91在线免费视频观看 | 五月天婷亚洲天综合网精品偷 | 欧美成人精品不卡视频在线观看 | 日韩一区二区不卡中文字幕 | 水中色av综合| 爱爱爱久久久久久久 | 国产舐足视频在线观看 | 一级毛片看真人在线视频 | 欧美激情 在线 | 久久久香蕉 | 久久国产精品久久久久久久久久 | 国产成人免费全部网站 | 羞羞网站在线播放 | 精品国产香蕉 | 亚洲综合网在线观看首页 | 亚洲国产欧洲精品路线久久 | s8国产成人精品视频 | 伊人伊人影院 | 日韩视频不卡 | 免费看一级毛片欧美 | 国产青青久久 | 天天干天天碰 | 日本乱人伦片中文字幕三区 | 老色鬼久久综合第一 | 久久亚洲精品人成综合网 | 欧美一区二区在线 | 农村野jizz外jizz农民 | 精品亚洲无人区一区二区 | 四虎免费播放观看在线视频 | 另类欧美chinese| 亚洲国产日韩综合久久精品 | 麻豆伦理 | 91精品国产综合久久欧美 | 久久se精品一区二区影院 | 久久亚洲欧美成人精品 | 日韩一级欧美一级一级国产 |