namespace A {
struct X {};
struct Y {};
void f(int) {}
void g(X) {}
}
namespace B {
void f(int i) {
f(i); //调用的是B的f
}
void g(A::X x) {
g(x); //调用的是A下的g(X),规则决定的,根据参数类型找函数
}
void h(A::Y y) {
h(y); //先查找A下没有再到B下查找,所以调用的是B下的h
}
}
namespace C {
void func(A::X x) {
g(x); //调用的是A下的g
}
}
c++namespace下ADL(Argument-Dependent Lookup)查找
最新推荐文章于 2024-04-01 19:40:03 发布