变量名c ++之前的"::"

Thu*_*che 2 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;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

30
10

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

qeh*_*hgt 14

::d是指d从全局命名空间

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

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