1.非引用形參通過復制實參值創建和定義函數的局部對象,從而對形參的操作不改變實參值。因為是復制初始化在形參前加const無影響。type function(type2 v) 和type function(const type2 v)是等價的。這一點在函數重載時也要注意,如果同時出現上述的兩個函數則是重復定義而不是重載。
2.引用形參是實參的別名,從而對形參的操作改變實參值。用途:第一,大型的參數通過復制初始化效率低時用引用參數;第二,對于一些不能復制初始化的參數;第三,可以通過增加形參返回額外的信息。 注意:type function(type2 v) 和 type function(const type2 v)是不同的。
3.const& :一般不需要修改實參時用const引用。這主要是考慮到非const引用形參的如下缺點:第一,傳遞的實參必須與形參類型完全相同,而不包含可以隱式轉換的類型;第二,傳遞的實參不能是const,右值。
4.指向指針的引用 type* &v;
5.(1)非引用數組形參:int*, int[],int[n]。這三個是等價的,都傳遞指向第一個元素的指針。這樣容易產生越界。如何防止越界呢?第一,通過結束標記檢測數組的結束,如C風格字符串;第二,用標準庫規范,傳遞第一個和最后一個的下一個元素的指針做參數;第三,顯示傳遞數組大小的形參。
5.(2)引用數組形參:type (&arr)[n]; 注意兩點:一是,圓括號是必須的,因為下標運算符的優先級更高;二是,表示數組元素個數的n是必須的,因為引用是數組別名,而數組是固定長度的。
6.默認實參:第一要考慮位置,第二,如果提供實參,則它覆蓋默認的實參值。

文章來源:http://liyuxia-life.spaces.live.com/Blog/cns!DA1B364675ACF35!242.entry