因为你调用的参数是 char* ,而函数的参数是string,必须发生隐式转换。而隐式转换生成的结果是string临时变量,而你又是引用,所以形参引用的是临时变量。但只有const引用才能引用临时变量,所以这里必须加const才能编译通过。