2
#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?有人可以向我解释一下吗?

4

1 回答 1

16

::dd来自全局命名空间的意思

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

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

于 2012-04-16T23:44:21.060 回答