1樓:何度千尋
子類呼叫父類的同名函式:
子類和父類返回值引數相同,函式名相同,有回virtual關鍵字,則由答物件的型別決定呼叫哪個函式。
子類和父類只要函式名相同,沒有virtual關鍵字,則子類的物件沒有辦法呼叫到父類的同名函式,父類的同名函式被隱藏了,也可以強制呼叫父類的同名函式class::funtion_name。
子類和父類引數不同,函式名相同,有virtual關鍵字,則不存在多型性,子類的物件沒有辦法呼叫到父類的同名函式,父類的同名函式被隱藏了,也可以強制呼叫父類的同名函式class::funtion_name。
子類和父類返回值不同,引數相同,函式名相同,有virtual關鍵字,則編譯出錯error c2555編譯器不允許函式名引數相同返回值不同的函式過載。
2樓:匿名使用者
b bb.a::a();
不知道為什麼要這麼做,子類覆蓋了父類的方法後又要去呼叫他,完全沒有實版用的意義權。上面的方法雖然可以,但是確破壞了封裝。
補充兩句,上面的程式錯誤太多了,類的成員是不能直接做初始化操作的,類結束沒有給分號,與類名同名的函式為建構函式,不可以攜帶型別做宣告等等,問題很多啊。
3樓:0o閉關修煉
a a;//申明父類的物件
a.a();//呼叫
c++中子類繼承父類,為何可以在子類和父類中命名相同名字的函式?
4樓:匿名使用者
你執行一bai
下下面的代du碼,就明白了zhi
。class c
};class b : public c
};class a : public b
void btest()
void ctest()
};void main()
ps:如果是虛擬函式,而dao且派生類的函式籤專名屬與基類的簽名一致,那麼,基類的該同名函式指標已經被覆蓋了,所以,就不可能再呼叫到基類的同簽名函式了。非虛擬函式才可以使用上面的方面來呼叫。
5樓:匿名使用者
這就是c++的多型了。。
虛擬函式應用,可以區分。
如果子類要呼叫父類的函式,可以不再宣告該函式,前提 是基類不要是純虛的。
6樓:求是的夢
這種行為被稱為overwrite
c++中子類可以直接呼叫父類實現的函式嗎
7樓:匿名使用者
子類能不能呼叫父類的函式與繼承方式有關,c++有三種繼承方式:
1.公用繼承(public):對於專基類成員在派生類中屬保持自己原來的的訪問級別,原來是public(private/ protected),在派生類中也還是public(private/protected)。
2.受保護繼承(protected):基類中的public成員和protected成員在派生類中為protected,private成員型別不變。
3.私有繼承(private):積累的所有成員在派生類中都是private的。
類中的成員有三種訪問型別:
1.public成員在呼叫類的函式裡可以使用。
2.private成員只能在類的組成部分內使用,如類的定義體,類的成員函式的定義體裡。
2.protected成員可以看做是前兩者的混合:他像private成員一樣不能被類的使用者訪問,像public成員一樣可被該類的派生類訪問。
php子類呼叫父類的父類方法嗎,PHP子類怎麼呼叫父類的屬性
這裡有兩bai 個問題啊,如果要呼叫,du直接呼叫不就行了zhi。繼承的dao話,不可以,版php單繼承,你只能繼權承你父類。比如說一個父親可以有好多兒子,這些兒子都可繼承他的財產,但是他的孫子只能繼承他兒子的財產不能繼承他的財產。php子類怎麼呼叫父類的屬性 class perpon public...
C 中子類繼承父類,為何可以在子類和父類中命名相同名字的函式
你執行一bai 下下面的代du碼,就明白了zhi class c class b public c class a public b void btest void ctest void main ps 如果是虛擬函式,而dao且派生類的函式籤專名屬與基類的簽名一致,那麼,基類的該同名函式指標已經被...
c虛擬函式如何調父類而非子類
1,如果以一個基礎類指標指向一個衍生類物件 派生類物件 那麼經由該指標只能訪問基礎類定義的函式 靜態聯翩 2,如果以一個衍生類指標指向一個基礎類物件,必須先做強制轉型動作 explicit cast 這種做法很危險,也不符合生活習慣,在程式設計上也會給程式設計師帶來困擾。一般不會這麼去定義 3,如果...