1

次の簡単な例を考えてみましょう。

#include <iostream>

int a=5;//1
extern int a;//2

int main(){ cout << a; }

標準は次のように述べています (秒 3.4/1):

名前のルックアップは、名前の明確な宣言を見つけるものとします

および (セクション 3.4.1/1):

名前の検索は、名前の宣言が見つかるとすぐに終了します。

質問:私の場合、どの宣言 (1 または 2) が見つかりますか? また、その理由は何ですか?

4

1 に答える 1

2

その句は、ヒットすると名前の検索が停止することを示していますint a=5;

ここでaは、グローバル名前空間に名前が 1 つだけあります。は 1 つしかないので曖昧ではありaません。 の宣言が複数あっても問題ありませんa。2 つの宣言、1 つの名前。(「あいまいな」ケースは、そのセクションで詳しく説明されているクラス メンバー名の検索でのみ発生する可能性があります)。

1 または 2 がこの節を満たすかどうかに応じて、ある種の異なる動作があることを期待しているというあなたの言葉遣いから、私は理解しています。しかし、ありません。

于 2014-05-31T05:05:47.400 に答える