为什么用::,例如:: std :: vector来预命名命名空间 [英] why prepend namespace with ::, for example ::std::vector

查看:107
本文介绍了为什么用::,例如:: std :: vector来预命名命名空间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我看过生产代码,例如

  :: std :: vector< myclass> myvec; 

我不知道前面的 ::



http://stackoverflow.com/questions/4925148/c-proper-way-to-iterate-over-stl-containers/4925261#4925261\">C++:迭代STL容器的正确方法

解决方案

前导::指的是全局命名空间。假设你说 namespace foo {... 。然后 std :: Bar foo :: std :: Bar ,而 :: std :: Bar 是指 std :: Bar ,这可能是用户的意思。因此,如果您不确定您当前处于哪个命名空间,那么始终包括初始的::可以防止引用错误的命名空间。


I have seen production code such as

::std::vector<myclass> myvec;

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

For an example see:

C++: Proper way to iterate over STL containers

解决方案

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.

这篇关于为什么用::,例如:: std :: vector来预命名命名空间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆