C++中判斷成員函數(shù)是否重寫
C++中判斷成員函數(shù)是否重寫
判斷一個(gè)成員函數(shù)是不是虛函數(shù)(重寫),有兩個(gè)三個(gè)條件:
- 兩個(gè)成員函數(shù)各自在基類和派生類中定義;
- 基類中定義的成員函數(shù)必須帶有關(guān)鍵字virtual,派生類的成員函數(shù)可帶可不帶。
- 這兩個(gè)成員函數(shù)原型(函數(shù)名,函數(shù)參數(shù),函數(shù)返回類型)必須相同。
注意:如果這兩個(gè)函數(shù)的返回類型分別為基類和派生類,返回值為指向基類和派生類的指針或引用,則也構(gòu)成重寫。此返回類型稱為協(xié)變。
調(diào)用這些成員函數(shù)時(shí),使用對(duì)象指針,這樣當(dāng)指針指向不同的對(duì)象時(shí),就可以調(diào)用不同類的成員函數(shù)。
下面給一個(gè)程序分析:
#include<iostream> using namespace std; class Grandam { public: virtual void introduce_self() { cout << "I am grandam." << endl; } }; class Mother:public Grandam { public: void introdude_self() { cout << "I am mother." << endl; } }; class Daughter :public Mother { public: void introduce_self() { cout << "I am daughter." << endl; } }; int main() { Grandam* ptr; Grandam g; Mother m; Daughter d; ptr = &g; ptr->introduce_self(); ptr = &m; ptr->introduce_self(); ptr = &d; ptr->introduce_self(); return 0; }
結(jié)果如圖所示:
從結(jié)果可知,每次都執(zhí)行了成員函數(shù)的虛函數(shù)introduce_self()版本,解決了繼承來(lái)的二義性問題。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
C語(yǔ)言數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言數(shù)組實(shí)現(xiàn)學(xué)生信息管理系統(tǒng)設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01C語(yǔ)言函數(shù)調(diào)用約定和返回值詳情
這篇文章主要介紹了C語(yǔ)言函數(shù)調(diào)用約定和返回值詳情,函數(shù)調(diào)用約定不同,會(huì)影響函數(shù)生成的符號(hào)名,函數(shù)入?yún)㈨樞颍螀?nèi)存的清理者,更多相關(guān)需要的小伙伴可以參考下文詳情介紹2022-07-07C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度
大家好,本篇文章主要講的是C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12VC++實(shí)現(xiàn)通過API來(lái)查看程序錯(cuò)誤信息的方法
這篇文章主要介紹了VC++實(shí)現(xiàn)通過API來(lái)查看程序錯(cuò)誤信息的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08Vscode配置C/C++環(huán)境使用minGW(保姆級(jí)配置過程)
本文主要介紹了Vscode配置C/C++環(huán)境使用minGW(保姆級(jí)配置過程),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02Matlab實(shí)現(xiàn)別踩白塊小游戲的示例代碼
別踩白塊是一款音樂類休閑游戲,游戲的玩法不難,只需跟著音樂的節(jié)奏點(diǎn)中對(duì)的方塊即可。本文將用Matlab實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下2022-03-03