為什么派生類中的重寫函數(shù)隱藏基類的其他重載?考慮一下守則:#include <stdio.h>class Base {public:
virtual void gogo(int a){
printf(" Base :: gogo (int) \n");
};
virtual void gogo(int* a){
printf(" Base :: gogo (int*) \n");
};};class Derived : public Base{public:
virtual void gogo(int* a){
printf(" Derived :: gogo (int*) \n");
};};int main(){
Derived obj;
obj.gogo(7);}得到了這個(gè)錯(cuò)誤:>g++ -pedantic -Os test.cpp -o test
test.cpp: In function `int main()':
test.cpp:31: error: no matching function for call to `Derived::gogo(int)'
test.cpp:21: note: candidates are: virtual void Derived::gogo(int*)
test.cpp:33:2: warning: no newline at end of file
>Exit code: 1在這里,派生類的函數(shù)將使基類中所有同名函數(shù)(而不是簽名函數(shù))黯然失色。不知何故,C+的這種行為看起來(lái)不太好。不是多態(tài)。
4 回答

炎炎設(shè)計(jì)
TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊
gogo(int*)
using Base::gogo;

蠱毒傳說(shuō)
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
從引用的類型開(kāi)始,然后轉(zhuǎn)到基類型,找到第一個(gè)類型,它有一個(gè)名為“gogo”的方法。 僅考慮那種類型上名為“gogo”的方法,就可以找到匹配的重載。
- 4 回答
- 0 關(guān)注
- 668 瀏覽
添加回答
舉報(bào)
0/150
提交
取消