新聞中心
今天,我們將會(huì)在這篇文章中為大家詳細(xì)介紹一下C++虛析構(gòu)函數(shù)的一些基本知識(shí)。相信對(duì)于剛剛接觸C++編程語(yǔ)言的初學(xué)者們現(xiàn)在急需要諸如這方面的基礎(chǔ)知識(shí)的講解內(nèi)容,以加大自己對(duì)這一語(yǔ)言的認(rèn)知。#t#

成都創(chuàng)新互聯(lián)公司成立與2013年,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元榆林做網(wǎng)站,已為上家服務(wù),為榆林各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:13518219792
C++的多態(tài)性是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的,虛函數(shù)的出現(xiàn)使得動(dòng)態(tài)鏈接成為可能。
基于構(gòu)造函數(shù)的特點(diǎn),不能將構(gòu)造函數(shù)定義為虛函數(shù),但可以將析構(gòu)函數(shù)定義為虛函數(shù)。當(dāng)派生類的對(duì)象從內(nèi)存中撤銷時(shí),會(huì)先調(diào)用派生類的析構(gòu)函數(shù),然后自動(dòng)調(diào)用基類的析構(gòu)函數(shù),如此看來(lái)析構(gòu)函數(shù)也沒(méi)有必要定義為虛函數(shù)。
但是考慮如下這種情況,如果使用基類指針指向派生類的對(duì)象,而這個(gè)派生類對(duì)象恰好是用new運(yùn)算創(chuàng)建的,這種情況下會(huì)如何呢?當(dāng)程序使用delete運(yùn)算撤銷派生類對(duì)象時(shí),這時(shí)只會(huì)調(diào)用基類的析構(gòu)函數(shù),而沒(méi)有調(diào)用派生類的析構(gòu)函數(shù)。如果使用的是虛析構(gòu)函數(shù)的話,就不一樣了,所以定義虛析構(gòu)函數(shù)有時(shí)候還是很有必要的。下面這段程序就說(shuō)明了上面的問(wèn)題:
沒(méi)有定義虛C++虛析構(gòu)函數(shù)時(shí),code如下:
- #include < iostream>
- using namespace std;
- class A
- {
- public:
- A(){}
- ~A()
- {
- cout< < "A::destructor"< < endl;
- }
- };
- class B:public A
- {
- public:
- B(){}
- ~B()
- {
- cout< < "B::destructor"< < endl;
- }
- };
- int main()
- {
- A *pA = new B;
- //
- delete pA;
- return 0;
- }
輸出的是A::destructor
這說(shuō)明delete pA只是調(diào)用了基類A的析構(gòu)函數(shù),而沒(méi)有調(diào)用子類B的析構(gòu)函數(shù),這不是我們所想要的。而把基類A的析構(gòu)函數(shù)定義為虛函數(shù)后,就可以達(dá)到了我們所想要的效果了。code如下:
- #include < iostream>
- using namespace std;
- class A
- {
- public:
- A(){}
- virtual ~A()
- {
- cout< < "A::destructor"< < endl;
- }
- };
- class B:public A
- {
- public:
- B(){}
- ~B()
- {
- cout< < "B::destructor"< < endl;
- }
- };
- int main()
- {
- A *pA = new B;
- //
- delete pA;
- return 0;
- }
輸出如下:
B::destrutor
A::destrutor
以上就是對(duì)C++虛析構(gòu)函數(shù)的相關(guān)介紹。
當(dāng)前標(biāo)題:C++虛析構(gòu)函數(shù)基本內(nèi)容概述
瀏覽地址:http://fisionsoft.com.cn/article/dhohssi.html


咨詢
建站咨詢
