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()版本,解決了繼承來的二義性問題。
感謝閱讀,希望能幫助到大家,謝謝大家對(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-01
C語(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-07
C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度
大家好,本篇文章主要講的是C語(yǔ)言計(jì)算字符串最后一個(gè)單詞的長(zhǎng)度,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12
VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法
這篇文章主要介紹了VC++實(shí)現(xiàn)通過API來查看程序錯(cuò)誤信息的方法,非常實(shí)用的功能,需要的朋友可以參考下2014-08-08
Vscode配置C/C++環(huán)境使用minGW(保姆級(jí)配置過程)
本文主要介紹了Vscode配置C/C++環(huán)境使用minGW(保姆級(jí)配置過程),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Matlab實(shí)現(xiàn)別踩白塊小游戲的示例代碼
別踩白塊是一款音樂類休閑游戲,游戲的玩法不難,只需跟著音樂的節(jié)奏點(diǎn)中對(duì)的方塊即可。本文將用Matlab實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以了解一下2022-03-03

