为什么用::,例如:: std :: vector来预命名命名空间 [英] why prepend namespace with ::, for example ::std::vector
问题描述
我看过生产代码,例如
:: std :: vector< myclass> myvec;
我不知道前面的 ::
前导::指的是全局命名空间。假设你说 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屋!