方法func
從DerivedClass
覆蓋方法func
及其所有重載從BaseClass
。類的方法覆蓋另一個類的所有方法
#include <cstdio>
class BaseClass
{
public:
void func(int a){puts("BaseClass::func(int)");};
void func(int a, int b){puts("BaseClass::func(int, int)");};
void func(int a, int b, int c){puts("BaseClass::func(int, int, int)");};
//...
};
class DerivedClass : public BaseClass
{
public:
void func(int a){puts("DerivedClass::func(int)");}
//...
};
int main()
{
DerivedClass obj;
obj.func(0);
obj.func(0, 0); // error
obj.func(0, 0, 0); // error
return 0;
}
我怎樣才能解決這個代碼最終在屏幕上推導:
DerivedClass::func(int)
BaseClass::func(int, int)
BaseClass::func(int, int, int)
編輯1 在功能main
不應該改變什麼
'不需要dynamic_cast'。可以用'obj.BaseClass :: func(0,0);'完成相同的操作。此外,問題是如何設計這兩個類,以便'func'可以直接在'obj'上調用。 – iavr
你說得對,我也會添加那個。謝謝。 –