考虑以下简单示例:
#include <iostream>
int a=5;//1
extern int a;//2
int main(){ cout << a; }
标准说(第3.4 / 1节):
名称查找应找到名称
的明确声明
和(sec.3.4.1 / 1):
一旦找到名称的声明,名称查找就会结束。
问题:在我的案例中会找到什么声明(1或2)以及为什么?
答案 0 :(得分:2)
该子句表示名称查找在到达int a=5;
此处只有一个名称,a
在全局命名空间中。它没有含糊不清,因为只有一个a
,如果有a
的多个声明,则无关紧要。两个声明,一个名字。 (&#34;模糊&#34;情况只能发生在类成员名称查找中,在该部分中有更全面的描述。)
我从你的措辞中得到的结论是,你期望存在某种不同的行为,取决于1或2是否符合这一条款;但是没有。