日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++虛析構(gòu)函數(shù)基本內(nèi)容概述

今天,我們將會(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ù)也沒有必要定義為虛函數(shù)。

但是考慮如下這種情況,如果使用基類指針指向派生類的對(duì)象,而這個(gè)派生類對(duì)象恰好是用new運(yùn)算創(chuàng)建的,這種情況下會(huì)如何呢?當(dāng)程序使用delete運(yùn)算撤銷派生類對(duì)象時(shí),這時(shí)只會(huì)調(diào)用基類的析構(gòu)函數(shù),而沒有調(diào)用派生類的析構(gòu)函數(shù)。如果使用的是虛析構(gòu)函數(shù)的話,就不一樣了,所以定義虛析構(gòu)函數(shù)有時(shí)候還是很有必要的。下面這段程序就說(shuō)明了上面的問題:

沒有定義虛C++虛析構(gòu)函數(shù)時(shí),code如下:

 
 
 
  1. #include < iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6. A(){}
  7. ~A()
  8. {
  9. cout< < "A::destructor"< < endl;
  10. }
  11. };
  12. class B:public A 
  13. {
  14. public:
  15. B(){}
  16. ~B()
  17. {
  18. cout< < "B::destructor"< < endl;
  19. }
  20. };
  21. int main()
  22. {
  23. A *pA = new B;
  24. //
  25. delete pA;
  26. return 0;
  27. }

輸出的是A::destructor

這說(shuō)明delete pA只是調(diào)用了基類A的析構(gòu)函數(shù),而沒有調(diào)用子類B的析構(gòu)函數(shù),這不是我們所想要的。而把基類A的析構(gòu)函數(shù)定義為虛函數(shù)后,就可以達(dá)到了我們所想要的效果了。code如下:

 
 
 
  1. #include < iostream>
  2. using namespace std;
  3. class A
  4. {
  5. public:
  6. A(){}
  7. virtual ~A()
  8. {
  9. cout< < "A::destructor"< < endl;
  10. }
  11. };
  12. class B:public A 
  13. {
  14. public:
  15. B(){}
  16. ~B()
  17. {
  18. cout< < "B::destructor"< < endl;
  19. }
  20. };
  21. int main()
  22. {
  23. A *pA = new B;
  24. //
  25. delete pA;
  26. return 0;
  27. }

輸出如下:

B::destrutor

A::destrutor

以上就是對(duì)C++虛析構(gòu)函數(shù)的相關(guān)介紹。


新聞名稱:C++虛析構(gòu)函數(shù)基本內(nèi)容概述
分享路徑:http://m.5511xx.com/article/dhohssi.html