共用方式為


範圍

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 );
    

請參閱

參考

基本概念