首页 > 编程语言 > 详细

C++以const 作为返回值类型的意义

时间:2017-10-29 12:21:56      阅读:280      评论:0      收藏:0      [点我收藏+]

const rational operator*(const rational& lhs, const rational& rhs);

很多程序员第一眼看到它会纳闷:为什么operator*的返回结果是一个const对象?因为如果不是这样,用户就可以做下面这样的坏事:

rational a, b, c;

...

(a * b) = c;       // 对a*b的结果赋值

我不知道为什么有些程序员会想到对两个数的运算结果直接赋值,但我却知道:如果a,b和c是固定类型,这样做显然是不合法的。

一个好的用户自定义类型的特征是,它会避免那种没道理的与固定类型不兼容的行为。对我来说,对两个数的运算结果赋值是非常没道理的。

声明operator*的返回值为const可以防止这种情况,所以这样做才是正确的。

 

基本上一般的operator=运算符函数都会以const & 作为返回值,这样是为了维护以上的理由。(达到同普通运算符的单向值的传递效果)

C++以const 作为返回值类型的意义

原文:http://www.cnblogs.com/lvchaoshun/p/7749663.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!