Wil*_*mKF 5 c++ inheritance hidden overloading
鉴于此代码:
class base {
public:
string foo() const; // Want this to be visible in 'derived' class.
}
class derived : public base {
public:
virtual int foo(int) const; // Causes base class foo() to be hidden.
}
Run Code Online (Sandbox Code Playgroud)
如何在不使用调用基类的虚方法重载复制它的情况下使base :: foo()对派生可见?是否using
做的伎俩,如果是的话,它在哪里去了,是不是这样?
class derived : public base {
public:
virtual int foo(int) const;
using base::foo;
}
Run Code Online (Sandbox Code Playgroud)
很抱歉回答简短,但是是的。它完全像这样并且做你想做的事:
class derived : public base {
public:
virtual int foo(int) const;
using base::foo;
};
Run Code Online (Sandbox Code Playgroud)
另请注意,即使没有:您也可以访问基础using
:
derived x;
string str = x.base::foo(); // works without using
Run Code Online (Sandbox Code Playgroud)