假设您有以下代码
namespace a{
struct S{};
//void f(int){}
}
namespace b{
struct T{};
}
struct X{};
void f(X){}
void f(b::T){}
void f(a::S){}
namespace a{
void g(){
S s;b::T t;
X x;
f(x);
f(s);
f(t);
}
}
int main(){
a::g();
}
如果在命名空间 a 中定义(第 3 行未注释),它会影响andvoid f(int){}
的后续定义,但不会影响。为什么?void f(b::T){}
void f(a::S){}
void f(X){}