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

" :: " before a variable name c++

本文关键字:C++ 变量名      更新时间:2023-10-16
#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?有人可以向我解释一下吗?

::d 表示从全局命名空间d

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

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