
一、純虛函式定義
純虛函式是一種特殊的虛函式,它的一般格式如下:
class <類名>
{
virtual <型別><函式名>(<引數表>)=0;
…
};
在許多情況下,在基類中不能對虛函式給出有意義的實作,而把它宣告為純虛函式,它的實作留給該基類的派生類去做,這就是純虛函式的作用,
純虛函式可以讓類先具有一個操作名稱,而沒有操作內容,讓派生類在繼承時再去具體地給出定義,凡是含有純虛函式的類叫做抽象類,
這種類不能宣告物件,只是作為基類為派生類服務,除非在派生類中完全實作基類中所有的的純虛函式,否則,派生類也變成了抽象類,不能實體化物件,
二、純虛函式引入原因
1、為了方便使用多型特性,我們常常需要在基類中定義虛擬函式,
2、在很多情況下,基類本身生成物件是不合情理的,例如,動物作為一個基類可以派生出老虎、孔 雀等子類,但動物本身生成物件明顯不合常理,
為了解決上述問題,引入了純虛函式的概念,將函式定義為純虛函式(方法:virtual ReturnType Function()= 0;),
若要使派生類為非抽象類,則編譯器要求在派生類中,必須對純虛函式予以多載以實作多型性,同時含有純虛函式的類稱為抽象類,它不能生成物件,
這樣就很好地解決了上述兩個問題,
例如,繪畫程式中,shape作為一個基類可以派生出圓形、矩形、正方形、梯形等, 如果我要求面積總和的話,那么會可以使用一個 shape * 的陣列,只要依次呼叫派生類的area()函式了,
如果不用介面就沒法定義成陣列,因為既可以是circle ,也可以是square ,而且以后可能加上rectangle,等等.
三、相似概念
1、多型性
指相同物件收到不同訊息或不同物件收到相同訊息時產生不同的實作動作,C++支持兩種多型性:編譯時多型性,運行時多型性,
a.編譯時多型性:通過多載函式實作
b 運行時多型性:通過虛函式實作,
2、虛函式
虛函式是在基類中被宣告為virtual,并在派生類中重新定義的成員函式,可實作成員函式的動態多載
3、抽象類
包含純虛函式的類稱為抽象類,由于抽象類包含了沒有定義的純虛函式,所以不能定義抽象類的物件,

另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!筆者這里或許可以幫到你~
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習書籍:

編程學習資料:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/270542.html
標籤:C++
上一篇:C/C++基礎知識:虛繼承
