" ::"在变量名称c ++之前

时间:2012-04-16 23:42:07

标签: c++ variables scope

#include <iostream>

using namespace std;

int d = 10;

int main()
{
    int d = 20;

    {
        int d = 30;
        cout << d << endl << ::d; // what does it mean?
    }

    return 0;
}

输出是:

  

30
  10

我不明白为什么“::d”会给出10?有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:14)

::d表示来自全局命名空间的d

编辑:有三个不同的变量具有相似的名称d。一个位于全局命名空间d=10中,一个位于main函数(20)的范围内,最后一个位于主函数(30)的内部块内。

在每个块中,您可以(通过名称)访问相应的变量,始终可以访问全局命名空间(::)。