最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

C/C++編程筆記:關(guān)于C++的虛函數(shù)和多態(tài),你必須了解這三點(diǎn)!

2020-09-18 22:12 作者:C語言編程__Plus  | 我要投稿

前言

本章節(jié)主要針對于C++中的虛函數(shù)和多態(tài)做一個(gè)詳細(xì)介紹。


虛函數(shù)

虛函數(shù)的長相其實(shí)很簡單,在C++類型用virtual修飾的函數(shù)就是虛函數(shù),如下代碼:


虛函數(shù)對于本類的影響:存在虛函數(shù)類的內(nèi)存會(huì)多四個(gè)字節(jié),如下測試代碼:


不過無論有多少個(gè)虛函數(shù),內(nèi)存只會(huì)多4個(gè)字節(jié),因?yàn)樗刑摵瘮?shù)都是用一個(gè)指針去存儲(chǔ)的,即就是所謂的虛函數(shù)指針,虛函數(shù)指針(virtual function pointer)從本質(zhì)上來說就只是一個(gè)指向函數(shù)的指針,與普通的指針并無區(qū)別。它指向用戶所定義的虛函數(shù),具體是在子類里的實(shí)現(xiàn),當(dāng)子類調(diào)用虛函數(shù)的時(shí)候,實(shí)際上是通過調(diào)用該虛函數(shù)指針從而找到接口。

抽象類

具有純虛函數(shù)的類我們稱之為抽象類,而純虛函數(shù)就是沒有函數(shù)體的函數(shù),它也是一個(gè)特殊的虛函數(shù),形態(tài)如下: virtual 函數(shù)返回值類型 函數(shù)名(參數(shù))=0,抽象類不能創(chuàng)建對象,但是可以創(chuàng)建對象指針,如下代碼:

抽象類一般充當(dāng)ADT過程,也就是抽象數(shù)據(jù)類型使用,以及在設(shè)計(jì)模式中充當(dāng)中間交互層。

虛函數(shù)和多態(tài)

多態(tài)按字面的意思就是多種形態(tài)。當(dāng)類之間存在層次結(jié)構(gòu),并且類之間是通過繼承關(guān)聯(lián)時(shí),就會(huì)用到多態(tài)。C++ 多態(tài)意味著調(diào)用成員函數(shù)時(shí),會(huì)根據(jù)調(diào)用函數(shù)的對象的類型來執(zhí)行不同的函數(shù)。其實(shí)對于多態(tài)的基本概念不需要背下來,只要你知道那個(gè)對象或者指針調(diào)用哪個(gè)成員基本上就行。

如一下代碼:


1.正常情況下

就是本類對象初始化本類指針,本類對象或者之指針調(diào)用本類的成員,無論是父類還是子類就是就近原則。


2.非正常情況下

父類對象初始化子類對象,一般是不允許這樣的操作的,這里不做概述,子類對象初始化父類指針,要看父類是否存在virtual,如果不存在,以指針類型為主,如果存在virtual就以對象為主。如一下測試代碼:


關(guān)于多態(tài)的實(shí)現(xiàn),不妨自行看看虛函數(shù)表的內(nèi)容,我相信有很多博客文章都有講解,這里不做詳細(xì)概述。

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

虛析構(gòu)函數(shù)也就是使用virtual修飾的虛函數(shù),為了能夠防止子類對象初始化父類指針過程中的所引發(fā)的析構(gòu)問題,我們常常會(huì)把父類的析構(gòu)函數(shù)寫成虛析構(gòu)函數(shù)。如下測試代碼:


如果你將父類的析構(gòu)函數(shù)改為虛析構(gòu)函數(shù),子類和父類的析構(gòu)函數(shù)將都可以被調(diào)用有興趣的可以去試試哦。

希望對大家有幫助!

另外如果你想更好的提升你的編程能力,學(xué)好C語言C++編程!彎道超車,快人一步!

分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對你有幫助的~



C/C++編程筆記:關(guān)于C++的虛函數(shù)和多態(tài),你必須了解這三點(diǎn)!的評論 (共 條)

分享到微博請遵守國家法律
武功县| 兴海县| 富平县| 肇源县| 临清市| 湘潭县| 新闻| 防城港市| 宁城县| 宝清县| 平度市| 盐亭县| 德惠市| 新巴尔虎左旗| 常德市| 新巴尔虎右旗| 二连浩特市| 正安县| 云阳县| 页游| 通榆县| 客服| 沙雅县| 财经| 富阳市| 泉州市| 和硕县| 新竹市| 乌兰县| 定远县| 新巴尔虎左旗| 商城县| 屏东县| 平果县| 太仆寺旗| 巫山县| 嘉定区| 揭西县| 博野县| 广南县| 樟树市|