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点。

你可能感兴趣的:(简明C/C++)