Ale*_*ler 6 c++ polymorphism inheritance overloading
今天我觉得自己像个菜鸟:
class Base
{
public:
virtual void foo(int)=0;
virtual void foo(int, int) {}
virtual void bar() {}
};
class Derived : public Base
{
public:
virtual void foo(int) {}
};
void main()
{
Derived d;
d.bar(); // works
d.foo(1); // works
d.foo(1,2); // compiler error: no matching function call
}
Run Code Online (Sandbox Code Playgroud)
我希望d继承foo(int, int)从Base,但事实并非如此.那我在这里错过了什么?
那是因为隐藏了具有相同名称的基本功能.
你需要使用using你没有覆盖的功能:
class Derived : public Base
{
public:
using Base::foo;
virtual void foo(int) {} //this hides all base methods called foo
};
Run Code Online (Sandbox Code Playgroud)