zoukankan      html  css  js  c++  java
  • C++以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可以防止这种情况,所以这样做才是正确的。

     

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

  • 相关阅读:
    Mybatis中#{}与${}的区别:
    JDBC
    JavaScript与jQuery的区别
    JavaScript 高级
    AdminLTE
    servlet过滤器与监听器
    数据库连接池
    大对象数据LOB的应用
    Serializable
    泛型
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/7749663.html
Copyright © 2011-2022 走看看