namespace A {
struct X();
struct Y();
void f(int) {}
void g(X) {}
}
namespace B {
void f(int i) {
f(i);
}
void g(A::X x) {
g(x);
}
void h(A::Y y) {
h(y);
}
}
C++函数会根据参数类型去寻找更加合适的函数类型,如B::g(A::X x),其中X为A中的类型,B::g(x)执行时所以会先找到A::g(x)。