c 的名字查詢

2021-05-01 04:34:11 字數 349 閱讀 1186

在c++中,函式編譯時檢查過程如下:

第一步,執行名字查詢(name lookup):在呼叫類中查詢,並生成候選列表;若候選列表為空,再擴大查詢範圍(如名

字空間內,或父類);如此迴圈。如果最終無結果,那麼抱歉,就會提示你「名字未能找到」;否則,編譯器跳到第二步。

第二步,執行過載辨別(overload resolution):如果第一步得到的候選者個數大於一,編譯器將以傳遞給函式的引數及其

型別為依據,嘗試找到最佳答案。如果無法據此確定最優者,就會報告「存在二義性呼叫」。

第三步,可見性檢查(accessibility checking):編譯器檢查是否可真正執行呼叫(比如,被呼叫函式是否是私有的)。

C 名字查詢

在學習c 一開始,我們就知道在使用型別 變數和函式時需要先定義。名字查詢的過程比較直截了當 當然,對於定義在類內的成員函式中的名字與上述的查詢規則有所區別,類的定義分兩步處理 首先,編譯成員的宣告 直到類全部可見後,才編譯函式體。成員函式中使用的名字按照如下方式解析 例如下面 include usi...

C C 程式設計 名字查詢

名字查詢,是當程式 現乙個名字時,將其與引入它的宣告聯絡起來的過程 例如,為編譯 std cout std endl 編譯器進行了 對於函式和函式模板中的名字,名字查詢可以將同乙個名字和多個宣告聯絡起來,而且可能從實參依賴查詢中得到額外的宣告。還會進行模板實參推導,並將宣告的集合交給過載決議,由它選...

C 的名字空間

1 名字空間的作用 1 避免名字衝突 2 劃分邏輯單元 2 定義名字空間 namespace 名字空間 struct student namespace ns2 3 名字空間成員的使用 1 通過作用域限定操作 空間成員 要訪問的成員 eg int main void 02namespace.cpp ...