自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++虛函數(shù)示例解讀

開發(fā) 后端
C++虛函數(shù)倒是什么?大多數(shù)人把它定義為一個被關(guān)鍵字virtaul說明的函數(shù)。具體的內(nèi)容介紹將會在這篇文章中呈現(xiàn)給大家。

C++編程語言中有一種比較特殊的函數(shù)叫做虛函數(shù)。我們應(yīng)該如何正確的理解C++虛函數(shù)呢?在這里我們將會針對這一方面的基本概念進(jìn)行一個詳細(xì)的介紹,希望能給大家?guī)硪恍椭?,提高對C++語言的認(rèn)知程度。

老鳥級的C++編程高手我想都掌握了虛函數(shù)的作用(哇,我沒說自己是老鳥),但新手我想定是看虛函數(shù)一章有點頭疼,或看懂了但在實際中用不出來,別急,讓我來說上一回。
何為虛函數(shù)?C++虛函數(shù)就是被關(guān)鍵字virtaul說明的函數(shù)。

舉個例子:

這個例子中WindowB和WindowC不同時存在,這在實際應(yīng)用中是常有的情況,為了節(jié)省內(nèi)存。

  1. class WindowA  
  2. {  
  3. public:   
  4. virtual void Draw(){};  
  5. };  
  6. class WindowB:public WindowA  
  7. {  
  8. public:  
  9. WindowB(){};  
  10. void Draw();  
  11. };  
  12. class WindowC:public WindowA  
  13. {  
  14. public:  
  15. WindowC(){};  
  16. void Draw();  
  17. };  
  18. void WindowB::Draw()  
  19. {  
  20. 畫一個圓;  
  21. }  
  22. void WindowC::Draw()  
  23. {  
  24. 畫一個正方形;  

當(dāng)在定義WindowA時,不確定它的派生類WindowB和WindowC在Draw函數(shù)中要畫什么,這時把Draw定義成C++虛函數(shù),在派生類中具體實現(xiàn)。

說到這,讀者會問:那我把Draw在WindowB和WindowC中寫好,還會少寫一個類WindowA。

是的,是少寫了,如你所說,你會如此使用:

  1. WindowB* b = new WindowB;  
  2. b->Draw(); //畫個圓  
  3. delete b;  
  4. WindowC* c = new WindowC;  
  5. c->Draw(); //畫個正方形  
  6. delete c; 

我這里用指針實現(xiàn),在上面的代碼中,b和c是兩個獨立的對象的指針。但如果派生類不是一兩個,而是幾十個,幾百個,那你該怎么辦呢?在頭文件中定義幾百個變量?

非也,到時候用C++虛函數(shù)的作用了:

  1. WindowA* a = new WindowsB;  
  2. a->Draw(); //畫個圓,此處調(diào)用了WindowB中的Draw函數(shù)實現(xiàn)  
  3. if(a)  
  4. delete a; //new 出來的一定要delete  
  5. WindowA* a=new WindowC;  
  6. a->Draw(); //畫個正方形,此處調(diào)用了WindowC中的Draw函數(shù)實現(xiàn)  
  7. if(a)  
  8. delete a; 

在上面的代碼中,a實現(xiàn)了一個中轉(zhuǎn)變量的作用,只要是從WindowA派生的,我都能賦值給a,而b和c都是臨時變量。再來多少個WindowA的派生類都沒問題了,我只要在頭文件中定義一個WindowA的指針變量就行了。

【編輯推薦】

  1. C++ Traits應(yīng)用技巧分享
  2. C++靜態(tài)構(gòu)造函數(shù)相關(guān)概念解析
  3. C++框架如何正確理解
  4. C++跨平臺應(yīng)用編譯方法詳解
  5. C++文件操作具體應(yīng)用函數(shù)介紹
責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2010-02-04 16:07:39

C++回調(diào)函數(shù)

2022-07-18 15:32:37

C++虛函數(shù)表

2010-01-18 17:38:54

C++虛函數(shù)表

2010-02-05 10:23:09

C++基本函數(shù)

2011-05-24 16:20:27

虛函數(shù)

2010-01-20 18:06:06

C++虛基類

2024-01-23 10:13:57

C++虛函數(shù)

2024-12-17 12:00:00

C++對象模型

2024-04-22 13:22:00

虛函數(shù)象編程C++

2010-02-02 17:39:31

C++構(gòu)造函數(shù)

2010-01-27 10:36:54

C++虛函數(shù)

2011-05-24 16:30:35

虛函數(shù)

2024-12-19 14:42:15

C++內(nèi)存泄漏內(nèi)存管理

2010-02-05 13:35:19

C++虛析構(gòu)函數(shù)

2010-02-03 15:46:15

C++函數(shù)傳遞

2010-01-21 14:07:14

CC++聲明

2011-07-20 17:04:55

C++虛函數(shù)動態(tài)聯(lián)編

2024-04-15 12:54:40

2010-02-05 16:46:58

C++ TinyXml

2009-08-26 15:35:59

C#虛函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號