为什么要在命名空间前加上 ::,例如 ::std::vector [英] why prepend namespace with ::, for example ::std::vector

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

问题描述

我见过生产代码如

::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.

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

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