前言
本章節主要針對于C++中的虛函式和多型做一個詳細介紹,
虛函式
虛函式的長相其實很簡單,在C++型別用virtual修飾的函式就是虛函式,如下代碼:
虛函式對于本類的影響:存在虛函式類的記憶體會多四個位元組,如下測驗代碼:
不過無論有多少個虛函式,記憶體只會多4個位元組,因為所有虛函式都是用一個指標去存盤的,即就是所謂的虛函式指標,虛函式指標(virtual function pointer)從本質上來說就只是一個指向函式的指標,與普通的指標并無區別,它指向用戶所定義的虛函式,具體是在子類里的實作,當子類呼叫虛函式的時候,實際上是通過呼叫該虛函式指標從而找到介面,
抽象類
具有純虛函式的類我們稱之為抽象類,而純虛函式就是沒有函式體的函式,它也是一個特殊的虛函式,形態如下: virtual 函式回傳值型別 函式名(引數)=0,抽象類不能創建物件,但是可以創建物件指標,如下代碼:
抽象類一般充當ADT程序,也就是抽象資料型別使用,以及在設計模式中充當中間互動層,
虛函式和多型
多型按字面的意思就是多種形態,當類之間存在層次結構,并且類之間是通過繼承關聯時,就會用到多型,C++ 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式,其實對于多型的基本概念不需要背下來,只要你知道那個物件或者指標呼叫哪個成員基本上就行,
如一下代碼:
1.正常情況下
就是本類物件初始化本類指標,本類物件或者之指標呼叫本類的成員,無論是父類還是子類就是就近原則,
2.非正常情況下
父類物件初始化子類物件,一般是不允許這樣的操作的,這里不做概述,子類物件初始化父類指標,要看父類是否存在virtual,如果不存在,以指標型別為主,如果存在virtual就以物件為主,如一下測驗代碼:
關于多型的實作,不妨自行看看虛函式表的內容,我相信有很多博客文章都有講解,這里不做詳細概述,
虛解構式
虛解構式也就是使用virtual修飾的虛函式,為了能夠防止子類物件初始化父類指標程序中的所引發的析構問題,我們常常會把父類的解構式寫成虛解構式,如下測驗代碼:
如果你將父類的解構式改為虛解構式,子類和父類的解構式將都可以被呼叫有興趣的可以去試試哦,
希望對大家有幫助!
另外如果你想更好的提升你的編程能力,學好C語言C++編程!彎道超車,快人一步!
C語言C++編程學習交流圈子,QQ群757874045【點擊進入】微信公眾號:C語言編程學習基地
分享(原始碼、專案實戰視頻、專案筆記,基礎入門教程)
歡迎轉行和學習編程的伙伴,利用更多的資料學習成長比自己琢磨更快哦!
編程學習軟體分享:

編程學習視頻分享:

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/78398.html
標籤:C++
下一篇:學習第29天
