C++用const或者constexpr限定的指针或引用传递参数,可以避免函数对参数对象进行修改,既高效又安全。
用const限制函数的参数能够保证函数不对参数做任何的修改,但是形参传递实参的过程中,就是对象的复制过程,需要遵守顶层const以及底层const复制的规则。
1.形参是顶层const一方面,const限定的参数不可修改;另一方面,实参传递忽略顶层const
即在调用函数时,可以忽略参数顶层const的限制,即向顶层const参数传递的实参既可以是常量对象,也可以是非常量对象。
int f(int i1, const int i2) {
//....................
}
const int x = 9;
int y = 100;
f(100, x);//x是常量实参
f(x, y);//y是非常量实参
由于在调用时,函数的顶层const被忽略,因此不能由顶层const区分函数形参,
在重载函数中应注意这个问题。
int f(int i1, const int i2) {
//....................
}
int f(int i1, int i2) {
//.....................
}
属于重载函数的重定义
2.形参是底层const其实,常见的底层const就是const限定的引用和指针两种情况,他们的复制规则同样适用于函数的底层const参数,即
同类型的底层const能够被转换成相同的数据类型才能够被复制,而且非常量能够转换成常量,但常量不能够转换为非常量。
要补作业了,先写到这555555



