一个有关C++常量引用的问题
C++Primer11中讲对于string::size_typefind_char(string&s,charc,string::Size_type&occurs);函数...
C++Primer 11 中讲对于string::size_type find_char(string &s,char c,string::Size_type &occurs);函数,若传入实参find_char("Hello World",'o',ctr);会导致编译错误,但是若把函数定义为,string::size_type find_char(const string &s,char c,string::Size_type &occurs);则正确。为什么是这样呢?另外有谁能否通俗的解释一下,何为底层const ,何为顶层const?
展开
2014-10-26
展开全部
若string引用编号为1,const string应用编号为2。1所对应字符串内容是可以更改的,2所对应的字符串是不可更改的。所以1给编程者控制字符串改变的权限,2就没有给出这种权限。权限高的引用变量可以赋值给权限低的引用变量,反过来着不行。若2可以赋值给1(当然会编译出错),岂不就是通过1就可以改变原来2所对应的字符串了,但是2所指的字符串常量"Hello World"本身就是不可改变的。左值=右值 这种表达式中,要遵循 左值的修改权限<=右值的修改权限。
追问
我理解您的一意思是:由于用户随意修改1型string变量,所以用户相对于1型来说权限更高,这样用你这个方法就说通了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询