在非限定名称查找期间找到的声明

时间:2014-05-31 04:45:35

标签: c++ global-scope

考虑以下简单示例:

#include <iostream>

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

int main(){ cout << a; }

标准说(第3.4 / 1节):

  

名称查找应找到名称

的明确声明

和(sec.3.4.1 / 1):

  一旦找到名称的声明,

名称查找就会结束。

问题:在我的案例中会找到什么声明(1或2)以及为什么?

1 个答案:

答案 0 :(得分:2)

该子句表示名称查找在到达int a=5;

时停止

此处只有一个名称,a在全局命名空间中。它没有含糊不清,因为只有一个a,如果有a的多个声明,则无关紧要。两个声明,一个名字。 (&#34;模糊&#34;情况只能发生在类成员名称查找中,在该部分中有更全面的描述。)

我从你的措辞中得到的结论是,你期望存在某种不同的行为,取决于1或2是否符合这一条款;但是没有。