最好将const看做参数的一部分,形参和实参保持一致,下面举个例子来说明形参与实参在const修饰不一致的情况下什么时候会出错,什么时候不会出错,以及其中的原因。
#include <iostream>
using namespace std;
void string_copy(char *){
cout<<"string_copy invoked";
}
int main(){
const char * pc_str = "this is a test";
string_copy(pc_str);
}
注意以上代码,形参是char *,而实参是const char * 类型,这种写法是编译不通过的。
形参是char *,那么在函数内部就是可以改变它指向的内容的,然而我们传给它的实参是const char *,意味着实参指向的内容不希望被改变,编译器会检测到这种矛盾并报错。
接下来我们交换一下写法,实参改为char *,形参改为const char*,这样有没有问题呢?