【发布时间】:2013-10-26 08:34:29
【问题描述】:
void f()
{}
struct A
{
void f()
{}
};
struct B : A
{
B()
{
f(); // A::f() is always called, and ::f is always ignored
}
};
int main()
{
B();
}
作为B类的设计者,我可能不知道B的基类,即A,有一个成员函数A::f,我只知道::f,然后调用::f 正是我想要的。
我期望编译器会因为调用 f 的模糊性而给出错误。但是,编译器总是选择A::f 而忽略::f。我认为这可能是一个很大的陷阱。
我只是想知道:
为什么成员函数的重载解析会排除全局函数?
原因是什么?
【问题讨论】:
标签: c++ function namespaces overloading overload-resolution