C++中的using命名空间声明

3

So for a while I've been using...

using namespace::std;

最近我意识到那应该是

using namespace std;

能有人解释一下为什么我之前的做法能够工作,以及它与正确声明使用特定命名空间的方式有何不同吗?


3
请考虑完全不要这样做。 - John Dibling
2
不要使用 using namespace std;,因为它被认为是一种不好的编程实践。 - juanchopanza
1个回答

6
第一个版本之所以可用是因为编译器将其视为:
using namespace ::std;
// Notice space^

这只是告诉编译器在全局范围内查找名称空间std

左侧没有任何内容的作用域运算符::与全局范围相同。


那么它和我们通常指的 std 不一样吗? - taocp
@taocp,这是一样的,因为std在全局命名空间中。 - juanchopanza
@taocp:在这个上下文中,::stdstd是等价的。 - John Dibling
@taocp 因为std在全局作用域内,所以使用std或者::std是一样的。 - Some programmer dude
感谢 @juanchopanza,John Dibling,Joachim Pileborg。 - taocp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接