一个有关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型来说权限更高,这样用你这个方法就说通了。
百度网友902bbf8
2014-10-26 · 超过18用户采纳过TA的回答
知道答主
回答量:92
采纳率:100%
帮助的人:33.2万
展开全部
你的函数参数定义为const型,非const传进去会隐含转换为const,若参数定义为非const,你传进去const型,相当于你给他一个其实不让改变的量,而他却可以改变这个值,就不行啦
追问
感谢您的回答,请问您能通俗的解释一下何为底层sonst 何为顶层const嘛?我看了书,但是一直不是很明白。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式