[英]Is 'using namespace' inside another namespace equivalent to an alias?
请考虑以下两个陈述:
namespace foo = bar;
和
namespace foo {
using namespace bar;
}
这两个陈述是等同的,还是有一些我不知道的微妙差异?
(请注意,这不是关于编码风格的问题 - 我只对C ++解析感兴趣)。
namespace foo=bar;
这不会影响任何名称查找规则。 唯一的影响是让'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
}
以下操作会更改查找规则
namespace NS
{
namespace bar
{
}
namespace foo {
using namespace bar;
void f () {
++i;
}
}
}
当'i'进行查找时,首先搜索'foo',然后搜索'NS'然后搜索'bar'。
在将名称空间导入另一个名称空间时,是的,在这方面它应该是相同的。 但是,第二个也允许放入其他代码,因此您也可以将不属于命名空间foo的内容放在其中。 前者只是创建一个别名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.