【发布时间】:2013-06-24 17:00:06
【问题描述】:
我最近发现使用using 将基类函数导入派生类的命名空间(当它被隐藏时)。我试图用它从基类中导入一个函数作为派生类中函数的实现:
class A {
public:
virtual void foo() = 0;
};
class B {
public:
void foo() {
}
};
class C : public A, public B {
public:
using B::foo;
};
int main()
{
C c;
}
这不会编译,因为A::foo() 是C 中的纯虚函数。我希望using B::foo; 能够实现foo()。为什么不是这样?
【问题讨论】:
-
using与覆盖无关。它只影响名称查找。 -
@VincentFourmond:这里的
using声明是多余的,因为即使没有它C也会继承B::foo,它还没有隐藏。 -
@KerrekSB 作为答案发帖!
标签: c++ inheritance virtual-functions overriding using-declaration