在標頭檔案中進行函式宣告
建議變數和函式應該在標頭檔案中宣告,在原始檔中定義。
使用引用避免拷貝
如果函式無須改變引用形參的值,最好將其宣告為常量引用。
表示陣列大小的形參// 比較兩個string物件的長度
bool isshorter(const
string &s1,const
string &s2)
initializer_list如果函式的實參數量未知但是全部實參的型別都相同,可以使用initializer_list型別的形參。void print(const int ia,size_t size) // 等價於const int* ia
f(int &arr[10]); // 將arr宣告成了引用的陣列
f(int (&arr)[10]); // arr是具有10個整數的整型陣列的引用
int *matrix[10]; // 10個指標構成的陣列
int (*matrix)[10]; // 指向含有10個整數的陣列的指標
和vector一樣,initializer_list也是一種模板型別,定義initializer_list物件時,必須說明列表中所含元素的型別。
和vector不一樣的是,initializer_list物件中的元素永遠是常量值,無法改變initializer_list物件中元素的值。initializer_list ls;
initializer_list it;
如果想向initializer_list形參中傳遞乙個值的序列,則必須把序列放在一對花括號內。
省略符形參省略符形參是為了便於c++程式訪問某些特殊的c**而設定的,這些**使用了名為varargs的c標準庫功能。省略符形參應該僅僅用於c和c++通用的型別。特別應該注意的是,大多數類型別的物件在傳遞給省略符形參時都無法正確拷貝。void error_msg(errcode e,initializer_list il)
// expected和actual是string物件
if(expected != actual)
error_msg(errcode(42),);
else
error_msg(errcode(0),);
省略符形參只能出現在形參列表的最後乙個位置。
void foo(parm_list,...);
void foo(...);
C 函式 筆記
內聯函式只適用於小函式,使用內聯函式需要注意以下幾點 內聯函式中不能含有任何迴圈語句以及switch和goto語句 內聯函式的宣告必須出現在內聯函式第一次被呼叫之前 內聯函式中不能說明陣列 遞迴函式不能定義為內聯函式 函式過載 函式引數個數或型別不同,可以構成過載函式 生命期 是指乙個識別符號從被建...
C 函式筆記
函式的呼叫需要完成兩項工作 一 實參初始化物件的形參 二 將控制權交給函式,主調函式中斷,被調函式執行。函式的返回型別不能是陣列。陣列不可以做函式返值的原因在於,函式的返值是賦值傳遞的,而陣列不可以進行簡單賦值。也就是函式的返回值是簡單的臨時變數方法,所以不支援是陣列。當然,函式不能返回函式,雖然不...
C 函式筆記
在c 中,函式的形參列表中的形參是可以有預設值的。語法 返回值型別 函式名 引數 預設值 示例 int func int a,int b 10,int c 10 1.如果某個位置引數有預設值,那麼從這個位置往後,從左向右,必須都要有預設值 2.如果函式宣告有預設值,函式實現的時候就不能有預設引數 i...