关闭

为什么有的函数的返回值为const?

934人阅读 评论(0) 收藏 举报

对返回值使用const有可能提高一个函数的安全性和效率,否则还会出问题

例如:

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可以防止这种情况,所以这样做才是正确的。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:107261次
    • 积分:1774
    • 等级:
    • 排名:千里之外
    • 原创:65篇
    • 转载:16篇
    • 译文:0篇
    • 评论:18条
    英语广角