C++使用命名空间声明

kik*_*uka 4 c++ namespaces using std

所以有一段时间我一直在使用......

using namespace::std;
Run Code Online (Sandbox Code Playgroud)

最近我意识到这应该是

using namespace std;
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么我在做什么,以及它与声明使用某个命名空间的正确方法有什么不同?

Som*_*ude 7

第一个版本有效,因为编译器将其视为

using namespace ::std;
// Notice space^
Run Code Online (Sandbox Code Playgroud)

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

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