这个C++文件...
为什么
(如果我使用
namespace foo {
class C {
void m();
};
void f();
}
using namespace foo;
void C::m() {}
void f() {}
编译成一个带有以下符号的目标文件:
$ g++ foo.cpp -c
$ nm foo.o -C
000000000000000a T f()
0000000000000000 T foo::C::m()
为什么
C::m()
会添加命名空间前缀,但f()
不会呢?(如果我使用
namespace foo {...}
而不是using namespace foo
,那么两个名称都会添加foo
前缀。)