C++中純虛函數與虛函數的作用和區別


今天課堂上使用到了c++中的純虛函數相關知識,而我卻無恥的只有一個很模糊的概念,並不是十分的掌握,於是我仔細的復習了這一塊。

      首先純虛函數是一種特殊的虛函數,在許多情況下,在基類中不能對虛函數給出有意義的實現,而把它聲明為純虛函數,它的實現留給該基類的派生類去做。這就是純虛函數的作用。通俗來說,使用純虛函數的類我們成為抽象類,該類不提供方法只提供接口,也可以很形象的理解為就是一個API。

  純虛函數的聲明方法:vitual void A()=0;

 

     虛函數則是為了實現多態,(多態性是允許你將父對象設置成為和一個或更多的他的子對象相等的技術,賦值之后,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的指針。)

 

  下面來看代碼實現:首先定義兩個類,A和B,B類是A類的子類,首先不使用虛函數。我們可以看到當我們使用A類定義的兩個指針p1和p2分別指向A類和B類,按道理我們的輸出應該是實現各自的print函數,但是結果卻是都是實現的A類中的print函數。

 

然后我們在將父類中的函數設置為虛函數(子類可直接延續父類相應的成為虛函數),我們可以看到分別實現了兩個print函數,這就是典型的多態實現。也就是虛函數的作用。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM