鱼C论坛

 找回密码
 立即注册
查看: 1190|回复: 1

C++为什么const成员函数的返回类型不能是非const的引用

[复制链接]
发表于 2016-4-3 10:50:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
const 类型的函数不能返回非const类型的引用
这句话的意思是如果你的函数是const类型的,并且要求返回值是类的非const或者非mutable成员变量,返回类型是引用,那么这是错误的。
这是我在网上找到的。

C++primer上写的是不能从const成员函数返回指向类对象的普通引用。

第一个问题是,为什么const类型的函数不能返回非const类型的引用。
第二是,网上找到的范围更大,C++primer仅是说返回类的对象的时候,哪个对。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-3 15:33:37 | 显示全部楼层
第一个问题,你描述的时候漏了一点,是不能返回非const类型的成员变量引用,注意是成员变量,如果返回的是非成员变量的引用,是可行,例如int& fun(int& n){return n+=m; }  ,这里m是类私有成员变量,而n不是。这是可行的
至于为什么,因为const成员函数的定义就是为了防止成员函数改变成员变量的值,所以从定义上就要求不能改变成员变量的值,所以。。。。
至于,你说的扩大范围,我对那个关键字也不熟悉,但它应该是把const类型变成非const类型,所以应该是对的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表