我在代码中看到了这两种方法。你能解释一下这两者有什么区别吗?因为我认为它与 C++ 完成命名空间查找的方式有关,您能否提供一些有关此的信息,或者可能是一个好的文档的链接?谢谢。
最佳答案
其实并不重要,至少在大多数情况下都没有。
前面的冒号以::identifier1::identifier2
格式表示要查看identifier1
的全局作用域,然后在该范围内寻找identifier2
。
我们使用identifier1::identifier2
格式查看identifier1
的当前范围。如果找不到,则搜索父作用域,依此类推,直到找到它。然后,我们在刚刚找到的范围内搜索identifier2
。
如果您已经在全局范围内,那就没关系了。但是,当您在 namespace 或类中嵌套了其他 namespace 或类时,情况就发生了变化。