名稱和限定的名稱
二進位的範圍解析運算子使用的名稱 (::) 稱為 「 完整的名稱 」。 二進位的範圍解析運算子必須是運算子的左邊或其基底類別的成員上指定類別的成員後,所指定的名稱。
指定成員選取運算子後面的名稱 (. 或 ->) 必須是類別的物件型別運算子的左邊或其基底類別的成員上所指定的成員。 指定在 [成員選取運算子右邊的名稱 (– >) 也可以是物件的另一個類別的型別,惟的左手邊 – > 是一種類別物件,這個類別會定義多載的成員選取運算子 (– >) 驗算出一些其他類別型別的指標。 (依此儲備會更詳細地討論類別成員存取。)
編譯器會搜尋順序如下,停止時找不到名稱的名稱:
目前的區塊範圍如果名稱用在函式。 否則,全域範圍。
向外擴展到每個封入區塊範圍,包括最外層的函式範圍 (其中包含函式引數)。
如果在成員函式會使用的名稱,名稱中搜尋該類別的範圍。
此類別的基底類別所搜尋的名稱。
封入巢狀類別範圍 (如果有的話),並搜尋其基底。 直到最外層的封入類別範圍中搜尋,就會繼續搜尋。
搜尋是以全域範圍。
不過,您可以對進行修改這個搜尋順序,如下所示:
名稱前面加上::強制在全域範圍開始搜尋。
名稱前面加上類別, struct,以及等位關鍵字會強制編譯器僅搜尋類別, struct,或等位名稱。
範圍解析運算子左邊的名稱 (::) 只能是類別, struct, 命名空間,或等位名稱。
如果名稱參考非靜態成員,但會使用靜態成員函式中,會產生錯誤訊息。 同樣地,如果名稱是指封入類別中的任何非靜態成員,產生錯誤訊息是因為被封入的類別並沒有封入類別這個的指標。