读书人

返回引用到底是什么意思?具体是如何实

发布时间: 2012-03-23 12:06:21 作者: rapoo

返回引用到底是什么意思?具体是怎么实现的?
比如这两个:
const BigClass& val() const { return _val; }

BigClass& val(){ return _val; }

这是一个成员函数的重载。我知道在参数列表后写const表示这是个常成员函数,就是不能改编成员对象和变量的值。
但是前边的返回引用我就看不懂具体是怎么回事了?还有加了个const难道说返回的东西是个常量?

还有,为什么不能这么写?
BigClass& val() const { return _val; }

[解决办法]
返回引用到底是什么意思?

就是把一个变量作为回调函数的引用
它的目的是为了实现链式的操作(比如赋值 a=b=c=d)
如果这个类的赋值运算符不返回引用
那么 a=b=c=d 会产生幽灵内存(被释放掉了,而你又去用它)

---------------------------

还有,为什么不能这么写?
BigClass& val() const { return _val; }

它和 BigClass& val(){ return _val; } 的区别是
前者不允许在函数体内修改成员变量

读书人网 >C++

热点推荐