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グローバル名前空間からを意味します

編集:同じような名前の3つの異なる変数がありますd。1つはグローバル名前空間d=10にあり、もう1つは関数のスコープ内にありmain20)、最後の1つはメイン関数の内部ブロック内にあります(30)。

すべてのブロック内で、対応する変数に(名前で)アクセスでき常にグローバル名前空間に(によって::)アクセスできます。

于 2012-04-16T23:44:21.060 に答える