範圍
C + + 名稱只能用於特定的程式的區域。 這個區域稱為 「 範圍 」 的名稱。 領域可決定 「 存留期 」 不會表示靜態範圍的物件的名稱。 和類別建構函式和解構函式呼叫時,會初始化區域變數的範圍時,範圍也會決定可見性的名稱。 (如需詳細資訊,請參閱建構函式 和 解構函式。) 有五種類型的領域:
本機領域在區塊內宣告的名稱是在該區塊以及接下來,而且只有在宣告的點之後,括住的區塊中存取。 型式的引數的函式的最外層區塊範圍內的函式的名稱可以區域的範圍,就像它們已經在封入函式主體區塊內宣告。 請考慮下列程式碼片段:
{ int i; }
因為宣告i是放在大括號,括住區塊i具有本機範圍,並不會存取,因為沒有程式碼可存取它之前右大括號。
函式範圍標籤是唯一有函式範圍的名稱。 它們可用於函式的任何地方,但就無法存取該函式以外。
檔案範圍之外所有的區塊或類別宣告的任何名稱都具有檔案範圍。 轉譯單位中的任何地方存取之後並與其宣告。 具有檔案範圍不會宣告靜態物件的名稱通常稱為 「 全域名稱。
C + + 檔案範圍又稱做為命名空間範圍。
類別範圍類別成員的名稱具有類別範圍。 可以存取類別成員函式只能透過成員選取運算子 (. 或 ->) 或成員指標運算子 (。 * 或 -> *) 在一個物件或物件,該類別 ; 的指標 非靜態類別成員資料會被視為本機至該類別的物件。 請參考下列類別宣告:
class Point { int x; int y; };
類別成員x和y範圍內的類別被視為Point。
原型範圍函式原型中所宣告的姓名可看到只到結束的原型。 下列的原型宣告三個名稱 (strDestination, numberOfElements,以及strSource)。 這些名稱超出範圍結尾的原型:
errno_t strcpy_s( char *strDestination, size_t numberOfElements, const char *strSource );