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,如果...