為什么派生類中的重寫函數(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++ -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+的這種行為看起來不太好。不是多態(tài)。
4 回答

炎炎設計
TA貢獻1808條經(jīng)驗 獲得超4個贊
gogo(int*)
using Base::gogo;

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