老師好,麻煩問(wèn)一下關(guān)于父子類同名函數(shù)的訪問(wèn)的問(wèn)題
在2-7節(jié) 析構(gòu)函數(shù)與虛析構(gòu)函數(shù)中,有說(shuō)如果父類子類的同名函數(shù)都是虛函數(shù)時(shí),那么虛函數(shù)表中的函數(shù)地址會(huì)被新函數(shù)地址(相應(yīng)對(duì)象的函數(shù)地址)所覆蓋,這一點(diǎn)我是理解的,但所不理解的是,如果這兩個(gè)函數(shù)不是虛函數(shù),那么我們就可以訪問(wèn),父類和子類兩個(gè)同名的函數(shù),虛函數(shù)表或者是其他表還存在嗎?如果存在他們的存放順序和訪問(wèn)原理是怎樣的?
2017-03-23
不是虛函數(shù)那就不存在于虛函數(shù)表中,至于虛函數(shù)表是否存在,取決于還有沒(méi)有其余的虛函數(shù)(包括從父類繼承來(lái)的虛函數(shù))。至于父類與子類的虛函數(shù)如何存放,好像是子類的新的虛函數(shù)會(huì)添加在父類的虛函數(shù)表后面作為子類的虛函數(shù)表,如果我么記錯(cuò)的話,應(yīng)該是這樣。
2017-03-22
虛函數(shù)表都存在,因?yàn)樽宇惛割惗即嬖谔摵瘮?shù)。正是因?yàn)楦采w了父類的同名函數(shù),所以在子類的虛函數(shù)表中,對(duì)應(yīng)父類同名函數(shù)的相同位置的虛函數(shù)指針替換了從父類繼承而來(lái)的虛函數(shù)指針,所以如果通過(guò)父類的指針來(lái)訪問(wèn)子類對(duì)象時(shí),由于子類對(duì)象的虛函數(shù)表中的相同位置的虛函數(shù)已經(jīng)做了替換,故實(shí)際調(diào)用的是覆蓋了子類虛函數(shù)