为什么要在命名空间前加上 ::,例如 ::std::vector

2022-01-14 00:00:00 namespaces c++

我见过生产代码如

::std::vector<myclass> myvec;

我不知道前面的 :: 是什么意思 - 为什么要使用它?

I have no idea what the prepending :: mean however - and why is it used?

示例见:

C++:迭代 STL 容器的正确方法

推荐答案

前导::"指的是全局命名空间.假设你说 namespace foo { ....那么std::Bar指的是foo::std::Bar,而::std::Bar指的是std::Bar,大概就是用户的意思吧.因此,如果您不确定当前所在的命名空间,始终包含初始的::"可以防止引用错误的命名空间.

The leading "::" refers to the global namespace. Suppose you say namespace foo { .... Then std::Bar refers to foo::std::Bar, while ::std::Bar refers to std::Bar, which is probably what the user meant. So always including the initial "::" can protect you against referring to the wrong namespace, if you're not sure which namespace you're currently in.

相关文章