请考虑以下两个陈述:
namespace foo = bar;
Run Code Online (Sandbox Code Playgroud)
和
namespace foo {
using namespace bar;
}
Run Code Online (Sandbox Code Playgroud)
这两个陈述是等价的,还是有一些我不知道的微妙差异?
(请注意,这不是关于编码风格的问题 - 我只对C++解析感兴趣).
Ric*_*den 16
namespace foo=bar;
Run Code Online (Sandbox Code Playgroud)
这不会影响任何名称查找规则.唯一的影响是让'foo'成为'bar'的别名.例如:
namespace bar
{
void b();
}
void f () {
bar::b (); // Call 'b' in bar
foo::b (); // 'foo' is an alias to 'bar' so calls same function
}
Run Code Online (Sandbox Code Playgroud)
以下操作会更改查找规则
namespace NS
{
namespace bar
{
}
namespace foo {
using namespace bar;
void f () {
++i;
}
}
}
Run Code Online (Sandbox Code Playgroud)
当'i'进行查找时,首先搜索'foo',然后搜索'NS'然后搜索'bar'.