C++多態(tài)的原因

多態(tài)性可以簡單的概括為“1個接口,多種方法”,在程序運行的過程中才決定調用的機制C++編譯器在編譯的時候,要確定每個對象調用的函數(shù)的地址,這稱為早期綁定(early binding), 程序實現(xiàn)上是這樣,通過父類指針調用子類的函數(shù),可以讓父類指針有多種形態(tài)。而要讓編譯器采用遲綁定,就要在基類中聲明函數(shù)時使用virtual關鍵字,這樣的函數(shù)我們稱為虛函數(shù)。一旦某個函數(shù)在基類中聲明為virtual,那么在所有的派生類中該函數(shù)都是virtual,而不需要再顯式地聲明為virtual。

遼陽縣網站建設公司成都創(chuàng)新互聯(lián)公司,遼陽縣網站設計制作,有大型網站制作公司豐富經驗。已為遼陽縣近1000家提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站制作要多少錢,請找那個售后服務好的遼陽縣做網站的公司定做!

正是由于每個對象調用的虛函數(shù)都是通過虛表指針來索引的,也就決定了虛表指針的正確初始化是非常重要的。換句話說,在虛表指針沒有正確初始化之前,我們不能夠去調用虛函數(shù)。那么虛表指針在什么時候,或者說在什么地方初始化呢?
答案是在構造函數(shù)中進行虛表的創(chuàng)建和虛表指針的初始化。構造函數(shù)的調用順序,在構造子類對象時,要先調用父類的構造函數(shù),此時編譯器只“看到了”父類,并不知道后面是否后還有繼承者,它初始化父類對象的虛表指針,該虛表指針指向父類的虛表。當執(zhí)行子類的構造函數(shù)時,子類對象的虛表指針被初始化,指向自身的虛表。

C++的多態(tài)性用一句話概括就是:在基類的函數(shù)前加上virtual關鍵字,在派生類中重寫該函數(shù),運行時將會根據(jù)對象的實際類型來調用相應的函數(shù)。如果對象類型是派生類,就調用派生類的函數(shù);如果對象類型是基類,就調用基類的函數(shù)。



 

本文題目:C++多態(tài)的原因
轉載注明:http://bm7419.com/article36/jjsjpg.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網站品牌網站建設、做網站云服務器、域名注冊、微信公眾號

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

手機網站建設