C 名字查詢

2021-10-25 03:41:58 字數 1012 閱讀 3998

在學習c++一開始,我們就知道在使用型別、變數和函式時需要先定義。名字查詢的過程比較直截了當:

當然,對於定義在類內的成員函式中的名字與上述的查詢規則有所區別,類的定義分兩步處理:

首先,編譯成員的宣告

直到類全部可見後,才編譯函式體。

成員函式中使用的名字按照如下方式解析:

例如下面**:

#include

using

namespace std;

typedef

double money;

money price =10;

class

account

private

: money price =20;

typedef

int money;};

intmain()

輸出結果為:

double

20

對於account::price型別money和account::getprice()返回值型別money,在他們之前出現且離他們最近的是typedef double money,所以型別是double。

而account成員函式getprice()中的price,最近的是類內的price。

再看乙個**:

#include

class

abc;

void

del(abc *pobj)

// 下面的**將會報錯

/*void del(abc *pobj)

*/class

abc~

abc(

)void

show()

};intmain()

輸出:

abc

因為del中的引數abc是之前宣告的abc,沒有析構函式。

c 的名字查詢

在c 中,函式編譯時檢查過程如下 第一步,執行名字查詢 name lookup 在呼叫類中查詢,並生成候選列表 若候選列表為空,再擴大查詢範圍 如名 字空間內,或父類 如此迴圈。如果最終無結果,那麼抱歉,就會提示你 名字未能找到 否則,編譯器跳到第二步。第二步,執行過載辨別 overload res...

C C 程式設計 名字查詢

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

c 名字控制

如果內部型別的靜態變數未初始化,編譯器會將其初始化為零。但使用者自定義型別必須使用建構函式來初始化。內部連線的名字可以放在乙個標頭檔案中而不擔心鏈結時發生衝突。如通常放在標頭檔案中的static const c 預設內部連線 c預設外部連線 內聯函式在預設的情況下是內部連線的。全域性物件都是隱含為靜...