頂層的const在過載時無法相互區分,底層的可以
void lookup(int i)
void lookup(const
int i)
void lookup(int* i)
void lookup(int* const i)
//重複宣告
void lookup(char& ch)
void lookup(const
char&)
void lookup(char *ch)
void lookup(const
char*ch)
對於那些只存在const差異的函式,嘗試用const-cast重用**。
const
string &shorterstring(const
string &s1, const
string &s2)
string &shorterstring(string &s1, string &s2)
如果我們在內層作用域之中宣告名字,他將隱藏外層作用域中宣告的同名實體。在不同的作用域中無法過載函式名。(思想:函式也是變數)
assert(expr),如果expr的值為假,則輸出錯誤提示資訊。並終止程式。
在預設情況下。ndebug是沒有被定義的巨集,如果定義了,那麼assert將不會有任何作用。
file當前檔名的字串字面值
_line當前行號的整形字面值
time檔案編譯時間的字串字面值
date檔案編譯日期的字串字面值
最佳匹配等級:
1.精確匹配:①實參型別和形參型別相同②實參從陣列型別或函式型別轉換為相應的指標型別③向實參新增或刪除i當即const
2.通過const轉換實現的匹配
3.通過型別提公升實現的匹配
4.通過算數型別轉換或指標轉換實現的匹配
5.通過類型別轉換實現的匹配
void func(long)
void func(float)
func(3.14)
//都需要實現型別轉換,存在二義性,不同的型別轉換之間沒有優先度
函式指標
bool (*pf)(const
string&,const
string &);
pf=lengthshorter;
pf=&lengthshorter;//兩種寫法都可以
pf(str1,str2)
(*pf)(str1,str2);//兩種等價呼叫
//呼叫指標形參
void usebigger(const
string &s1,const
string &s2,bool (*pf)(const
string &,const
string &));
void usebigger(const
string &s1,const
string &s2,bool pf(const
string &,const
string &));
//等價宣告
//返回函式的指標
int (*f1(int))(int*,int);
auto f1(int)->int(*)(int*,int);
//返回乙個指標,這個指標指向乙個函式,函式的引數是乙個整形指標和整形,返回值是乙個整形
第六章讀書筆記
linux系統將每個驅動都對映成乙個檔案,這些檔案稱為裝置檔案或驅動檔案,都儲存在 dev目錄中。編寫linux驅動程式的步驟 第1 步 建立linu x 驅動骨架 裝載和解除安裝linu x 驅動 第2 步 註冊和登出裝置檔案 第3 步z 指定與驅動相關的資訊 第4 步 指定 函式 第5 步z 編...
第六章 讀書筆記
第六章主要講的是第乙個linux 驅動程式 統計單詞個數。從這章開始進入了實戰階段,這一章首先介紹了linux 驅動的工作方式,linux 將每乙個驅動都對映成乙個檔案,這些檔案被稱為裝置檔案或驅動檔案,都儲存在 dev 目錄中,使得 linux 驅動互動就像是普通檔案互動一樣。編寫linux 驅動...
C Primer 讀書筆記 第六章
第 章 語句 簡單語句 表示式語句 expression r statement 乙個表示式加上結尾的分號,執行時導致該表示式被求值 空語句 null statement 只由乙個單獨的分號組成,當語法上需要乙個語句但邏輯上並不需要時使用 宣告語句 用於宣告或定義物件或類 復合語句 復合語句 com...