const引用就是指“指向const对象的引用”,而“非const引用”表示的就是指向非const类型的引用。
比如:
string s="hello";
string &ss=s;//正确
string &sss="world";//不正确,编译器会报错,因为你将一个const char *要赋值给一个std::string &型,这是不被允许的,也就是将一个只读的字符串赋值给一个不是只读的。
string &ss=s;//正确
string &sss="world";//不正确,编译器会报错,因为你将一个const char *要赋值给一个std::string &型,这是不被允许的,也就是将一个只读的字符串赋值给一个不是只读的。
而如下的声明有正确:
const string &sss="world";//正确;
这是因为const引用就是指向只读(const)的字符串,所以赋值号右边的也正好是一个只读的字符串。