声明区域
C++语言中,名字的声明区域(declarative region),是指一个名字在程序文本中可能有效的最大的区域,在这个区域中,未受限定的该名字绑定到同一个实体。[參 1]
例如:
int j = 24; int main() { int i = j, j; j = 42; }
名字j被声明了两次并被使用了两次。第一个被声明的j的声明区域是整个例子程序。第一个j的潜在作用域(potential scope)在这个名字被声明处之后,并持续至程序的末尾。但第一个j的(实际)作用域应排除逗号,与右花括号}之间的程序区域。第二个被声明的j(在分号之前的那个j)的声明区域是一对花括号{与}括起来的整个程序区域(也即main函数的函数体),[參 2]但第二个j的潜在作用域应排除名字i的声明。第2个j的(实际)作用域与它的潜在作用域相同。
由C++11语言标准中提供的上述示例程序及其说明,可以得出结论:名字的声明区域是它可能保持有效的最大的程序结构,如整个编译单元、整个命名空间、一对花括号{与}括起来的整个语句块、整个函数体(甚至包括函数的形参列表)、类定义(包括成员函数的定义)等等。
参考文献
编辑- ^ C++11语言标准,§3.3.1.1:Every name is introduced in some portion of program text called a declarative region, which is the largest part of the program in which that name is valid, that is, in which that name may be used as an unqualified name to refer to the same entity.
- ^ C++11语言标准,§3.3.1.2:The declarative region of the second declaration of j (the j immediately before the semicolon) includes all the text between { and }