c++ -::myFunction() 是否属于全局命名空间?

标签 c++ function scope namespaces

我知道在 C++ 中,我们使用 :: 来限定变量或函数的命名空间,例如 myNamespace::a。但我注意到一些用法,例如 ::myFunction()。这是否意味着该函数属于全局命名空间?

最佳答案

如果代码编译通过,那么是的,::myFunction() 正在引用 myFunction 的全局声明。

这在局部定义影响全局定义时最常用:

namespace local {
    int myFunction() {}; // local namespace definition
};
int myFunction() {}; // global definition.
using namespace local;

int main() {
    // myFunction(); // ambiguous two definitions of myFunction in current scope.
    local::myFunction(); // uses local::myFunction();
    ::myFunction(); // uses global myfunction();

关于c++ -::myFunction() 是否属于全局命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620500/

相关文章:

尽管满足 "if/else",但 Javascript 函数未执行

c - 函数范围和递增参数

c++ - 如何使用 KMEANS_USE_INITIAL_LABELS 在 opencv kmeans 中设置初始标签

无法解决使用 C 中函数的指针返回数组的错误?

javascript - 为什么重新定义函数后函数变量仍然存在?

javascript - 高阶函数中 count++ 和 count+1 的区别

javascript - 同一个变量声明了两次。用的是哪个? -- JavaScript

c++ - 使用文件 C++

c++ - 模板类的许多实例化会影响性能吗?

c++ - 返回 const 模板类型的模板函数