假設我有一些像這樣的代碼:在C++中的子類重載的方法
class Base {
public:
virtual int Foo(int) = 0;
};
class Derived : public Base {
public:
int Foo(int);
virtual double Foo(double) = 0;
};
class Concrete : public Derived {
public:
double Foo(double);
};
如果非要型混凝土的一個目的,爲什麼我不能調用foo(INT)?
如果我更改Foo(double)的名稱以使它不會重載Foo,那麼一切都很好,兩種方法都可以訪問,但這不是我想要的。
同樣,如果我刪除具體類和實現Foo(雙)派生,然後都可訪問,但再次,不是我想要的。
我不明白這個問題。 GCC版本3.3.6和4.2.4都沒有抱怨地編譯這段代碼。 – 2009-11-14 17:25:03
由於將整數隱式轉換爲雙精度 - 嘗試向函數添加跟蹤並執行具體的c; int i = 1; c.Foo(i);' – 2009-11-14 17:30:52
如果你重新定義了子類中的虛擬方法,那麼這不是被稱爲覆蓋嗎? – mucaho 2015-11-05 17:41:00