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 }