關于函數重載有一些細節需要注意:
函數重載的關鍵是參數列表(或稱函數特征標)不同。請記住,是特征標,而不是返回類型使得函數進行重載。即,返回類型可以不同或相同,但特征標必需不同。
注意以下兩個原型無法構成重載:
double cube (double x);
double cube (double & x);
從編譯器角度考慮,當執行cout << cube(x)時,編譯器無法確定究竟用哪一個原型。因此,編譯器把類型引用和類型本身視為同一個特征標。
匹配函數時,并不區分const和非const變量。具體而言,如果某函數有用于const和非const參數的兩種原型,則編譯器會根據實參是否為const來決定使用哪個原型。如果某函數僅有const參數原型,則可以接受const和非const兩種實參;如果某函數僅有非const參數原型,則只能接收非const實參。
新聞熱點
疑難解答