void
fun(initializer_listil)//initializer_list定義在同名的標頭檔案中
fun();
initializer_list物件的元素永遠是常量值。
string read();
void print(const
string &);
void print(double);//過載print函式
void foobar(int ival)
函式中實參是形參的初始值,第乙個實參對應第乙個形參。但是編譯器能以任意可行的順序對實參求值(實參可以是函式或者表示式)
形參名是可以省略的,未命名的形參無法使用。
函式的返回型別不能是陣列型別或者函式型別。
區域性靜態物件的生命週期貫穿函式呼叫及之後的時間(函式呼叫結束後不銷毀,程式終止時被銷毀)(靜態把物件的生命週期提公升了乙個級別?)——p185
當使用陣列作為形參,要防止陣列使用的越界。
陣列引用形參一定要加括號
void fun(int (&arr)[10]); //正確:arr是具有10個整數的整形陣列的引用。
void fun(int &arr[10]); //錯誤:將arr宣告成引用的陣列。
函式不能反回區域性物件的引用或指標。返回引用的函式得到的是左值其他型別得到的是右值。
在給定作用域中乙個形參只能被賦予一次預設實參。
呼叫過載函式時應該盡量避免強制型別轉換。如果在實際應用中確實需要強制轉換型別轉換,則說明我們設計的形參集合不合理。
函式指標的型別必須與過載函式中的某乙個精確匹配。
通過使用引用避免拷貝(拷貝大的類型別物件或者容器物件是比較低效的),如果不需要改變形參的值,只需要將其宣告為常量引用。
void fun(const
int &i)
c++可以使用尾置返回型別
//func返回乙個指標,該指標指向含有10個整數的陣列
auto
func(int i)->int(*)
[10];
如果形參是某種型別的指標或引用,通過區分其指向的是常量物件還是非常量物件可以實現函式過載。——p208
函式不能定義函式型別的形參,但是可以定義指向函式的指標,同理可以定義返回指向函式的指標。
將auto和decltype用於函式指標型別
int func1(const
int&);
int func2(const
int&);
//根據形參的取值,getfun函式返回指向func1或者func2的指標。
decltype(func1) *getfun(const
string&);
《C Primer》讀書筆記 函式
函式定義 函式組成 由函式名 一組運算元 形參,parameter 在一對圓括號中宣告,形參之間由逗號分隔 函式執行的運算 函式體,function body 塊組成和乙個返回型別組成 return type 函式呼叫 使用呼叫操作符進行呼叫 一對圓括號 形參型別必須與實參相同或者實參可被轉換為形參...
C primer 讀書筆記
第2 章 變數和基本型別 1 變數直接初始化和變數 複製初始化 int ival 1024 direct initialization int ival 1024 copy initialization 初始化不是賦值 2 內建型別復 制初始化和直接初始化幾乎沒有區別 但 對類型別物件來 說,有些初...
C Primer讀書筆記
前些日子開始看 c primer 順便做一些筆記,既有書上的,也有自己理解的。因為剛學c 不久,筆下難免有謬誤之處,行文更是凌亂 所幸不是用來顯配的東西,發在linuxsir只是為了方便自己閱讀記憶,以防只顧上網忘了正事。書看了不到一半,所以大約才寫了一半,慢慢補充。const要注意的問題 1 下面...