成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++虛析構函數基本內容概述

開發 后端
我們在這里將會通過一段代碼示例的解讀來為大家詳細分析一下C++虛析構函數的相關應用方法以及基本概念,讓大家對此有一個充分的掌握。

 

今天,我們將會在這篇文章中為大家詳細介紹一下C++虛析構函數的一些基本知識。相信對于剛剛接觸C++編程語言的初學者們現在急需要諸如這方面的基礎知識的講解內容,以加大自己對這一語言的認知。#t#

C++的多態性是通過虛函數來實現的,虛函數的出現使得動態鏈接成為可能。

基于構造函數的特點,不能將構造函數定義為虛函數,但可以將析構函數定義為虛函數。當派生類的對象從內存中撤銷時,會先調用派生類的析構函數,然后自動調用基類的析構函數,如此看來析構函數也沒有必要定義為虛函數。

但是考慮如下這種情況,如果使用基類指針指向派生類的對象,而這個派生類對象恰好是用new運算創建的,這種情況下會如何呢?當程序使用delete運算撤銷派生類對象時,這時只會調用基類的析構函數,而沒有調用派生類的析構函數。如果使用的是虛析構函數的話,就不一樣了,所以定義虛析構函數有時候還是很有必要的。下面這段程序就說明了上面的問題:

沒有定義虛C++虛析構函數時,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;  

輸出的是A::destructor

這說明delete pA只是調用了基類A的析構函數,而沒有調用子類B的析構函數,這不是我們所想要的。而把基類A的析構函數定義為虛函數后,就可以達到了我們所想要的效果了。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;  

輸出如下:

B::destrutor

A::destrutor

以上就是對C++虛析構函數的相關介紹。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-02-06 13:58:13

C++ Bost庫

2010-02-02 15:12:09

C++ explici

2024-12-19 14:42:15

C++內存泄漏內存管理

2010-02-05 10:08:55

C++名字空間

2010-02-04 15:51:07

C++迭代器

2025-02-18 00:08:00

代碼C++RAII

2010-01-28 15:33:37

Android程序架構

2010-03-02 15:53:02

WCF服務合同

2010-02-04 16:39:26

C++析構函數

2010-01-18 15:53:27

C++析構函數

2010-03-02 17:55:37

WCF終結點地址

2010-02-03 15:06:02

C++可變參數表

2025-04-11 07:50:00

虛析構函數C++開發

2011-07-15 01:29:39

C++析構函數

2010-02-25 17:04:54

WCF實例上下文

2009-08-14 17:24:28

C#構造函數和析構函數

2009-09-03 13:14:55

C#構造函數C#析構函數

2010-01-04 15:21:37

Silverlight

2009-09-10 10:47:05

C# form

2010-02-01 11:22:09

C++虛函數
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 手机av免费在线 | 中文字幕国产精品视频 | 日韩成人专区 | 久久久人成影片免费观看 | 性福视频在线观看 | 欧美精品在线免费 | 国产精品毛片久久久久久久 | 欧美高清视频一区 | 自拍偷拍中文字幕 | 成人福利在线观看 | 一区二区三区中文字幕 | 日本成人综合 | 精品亚洲视频在线 | 在线观看电影av | 久久久久91| 欧美激情一区 | 玖玖爱365| 日韩欧美一区二区三区四区 | 国产精品观看 | 99精品久久 | a级片在线| 日韩精品在线观看网站 | 日韩一区二区三区精品 | 91久久精品 | 中国一级特黄视频 | 观看av | 国产黄色大片在线免费观看 | 亚洲欧美在线免费观看 | 在线观看av网站永久 | 免费观看av| 午夜不卡福利视频 | 9191成人精品久久 | 97色在线观看免费视频 | 97精品国产 | 日本免费一区二区三区四区 | 欧美日韩国产高清 | 在线午夜电影 | 日本亚洲欧美 | 亚洲成人av在线播放 | 91av导航 | 成人国产精品久久久 |