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語言標準中提供的上述示例程序及其說明,可以得出結論:名字的聲明區域是它可能保持有效的最大的程序結構,如整個編譯單元、整個命名空間、一對花括號{與}括起來的整個語句塊、整個函數體(甚至包括函數的形參列表)、類定義(包括成員函數的定義)等等。

參考文獻

編輯

    參:

  1. ^ 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.
  2. ^ 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 }