1. 程式人生 > >C++中的const限定符(5)——const形參和實參

C++中的const限定符(5)——const形參和實參

1、當形參有頂層const時,傳給它常量物件或非常量物件都是可以的,這一點複合之前所說的,因為形參的初始值是拷貝了實參的。

2、在定義過載函式時,需要注意:對於形參是否是const的,是無法被編譯器所區分的。

void foo(int i){}

void foo(const int i){}                         //無法實現過載

3、函式中實參和形參的匹配與初始化時一樣,需要遵循同樣的規則。

3.1、對於非常量引用形參的函式,不能使用字面值求值結果相同的表示式需要轉換的物件const物件去呼叫該函式。

3.2、對於非指標常量形參的函式,只能使用相同的型別。

4、如果函式的形參是引用且函式本身不會改變引用的值,那麼,強烈建議將其定義為常量引用。否則會出現以下這些情況:

   4.1、函式的呼叫會受到極大的限制,參考第3點。

   4.2、無法在常量引用的函式中正常的呼叫非常量引用的函式。

   void f2(int &i){}

   void f1(const int &i)

   {

      f2(i);                //錯誤

   }

   4.3、正如之前提到的,臨時量一般都是const型別的。所以此時也會出現錯誤。參考:const的基本用法第2點。