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