C 中子類繼承父類,為何可以在子類和父類中命名相同名字的函式

2021-04-17 12:55:45 字數 1183 閱讀 2083

1樓:匿名使用者

你執行一bai

下下面的代du碼,就明白了zhi

。class c

};class b : public c

};class a : public b

void btest()

void ctest()

};void main()

ps:如果是虛擬函式,而dao且派生類的函式籤專名屬與基類的簽名一致,那麼,基類的該同名函式指標已經被覆蓋了,所以,就不可能再呼叫到基類的同簽名函式了。非虛擬函式才可以使用上面的方面來呼叫。

2樓:匿名使用者

這就是c++的多型了。。

虛擬函式應用,可以區分。

如果子類要呼叫父類的函式,可以不再宣告該函式,前提 是基類不要是純虛的。

3樓:求是的夢

這種行為被稱為overwrite

c++繼承父類的子類,如何呼叫父類的同名函式?

4樓:何度千尋

子類呼叫父類的同名函式:

子類和父類返回值引數相同,函式名相同,有回virtual關鍵字,則由答物件的型別決定呼叫哪個函式。

子類和父類只要函式名相同,沒有virtual關鍵字,則子類的物件沒有辦法呼叫到父類的同名函式,父類的同名函式被隱藏了,也可以強制呼叫父類的同名函式class::funtion_name。

子類和父類引數不同,函式名相同,有virtual關鍵字,則不存在多型性,子類的物件沒有辦法呼叫到父類的同名函式,父類的同名函式被隱藏了,也可以強制呼叫父類的同名函式class::funtion_name。

子類和父類返回值不同,引數相同,函式名相同,有virtual關鍵字,則編譯出錯error c2555編譯器不允許函式名引數相同返回值不同的函式過載。

5樓:匿名使用者

b bb.a::a();

不知道為什麼要這麼做,子類覆蓋了父類的方法後又要去呼叫他,完全沒有實版用的意義權。上面的方法雖然可以,但是確破壞了封裝。

補充兩句,上面的程式錯誤太多了,類的成員是不能直接做初始化操作的,類結束沒有給分號,與類名同名的函式為建構函式,不可以攜帶型別做宣告等等,問題很多啊。

6樓:0o閉關修煉

a a;//申明父類的物件

a.a();//呼叫

java中子類會繼承父類的構造方法嗎

是的,繼承 是子類會繼承父類的屬性和方法,構造方法也是屬於方法,所以會繼承構造方法,例如 public class concept 父類 超類 class chicken public void desc 子類 class homechicken extends chicken 子類野雞類 clas...

c繼承父類的子類如何呼叫父類的同名函式

子類呼叫父類的同名函式 子類和父類返回值引數相同,函式名相同,有回virtual關鍵字,則由答物件的型別決定呼叫哪個函式。子類和父類只要函式名相同,沒有virtual關鍵字,則子類的物件沒有辦法呼叫到父類的同名函式,父類的同名函式被隱藏了,也可以強制呼叫父類的同名函式class funtion na...

c虛擬函式如何調父類而非子類

1,如果以一個基礎類指標指向一個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以一個衍生類指標指向一個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾。一般不會這麼去定義 3,如果...