c++以const&作为返回值的意义何在
2011-12-29 23:44
260 查看
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 & 作为返回值,这样是为了维护以上的理由。(达到同普通运算符的单向值的传递效果)
const rational& rhs);
很多程序员第一眼看到它会纳闷:为什么operator*的返回结果是一个const对象?因为如果不是这样,用户就可以做下面这样的坏事:
rational a, b, c;
...
(a * b) = c; // 对a*b的结果赋值
我不知道为什么有些程序员会想到对两个数的运算结果直接赋值,但我却知道:如果a,b和c是固定类型,这样做显然是不合法的。一个好的用户自定义类型的特征是,它会避免那种没道理的与固定类型不兼容的行为。对我来说,对两个数的运算结果赋值是非常没道理的。声明operator*的返回值为const可以防止这种情况,所以这样做才是正确的。
基本上一般的operator=运算符函数都会以const & 作为返回值,这样是为了维护以上的理由。(达到同普通运算符的单向值的传递效果)
相关文章推荐
- C++语言笔试题目 C++中为什么用模板类&& 类中如何使用const &&函数重载,我们靠什么来区分调用的那个函数?靠返回值判断可以不可以
- 【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别
- CONST的学问C&&C++
- 对C++ 中Enum & Macro &Const 的理解
- const在C++的使用策略和意义
- [C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)
- 「C++」条款02 & 03:#define & const
- c++ const: const 变量, const 输入参数, const 返回值, const 成员函数
- C++类型转换运算符之const_cast<newtype>(expression)
- 对C++中const T*&含义的理解
- C++ const && define
- const&和const作为返回类型
- 错误:将'const x'作为'x'的'this'实参时丢弃了类型限定问题解决
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- C++ const 指针 & 指向const对象的指针
- 【C++错误处理】VC6中关于bool __cdecl std::isdigit(_E,const class std::locale &)' : expects 2 arguments
- C语言和C++的几点不同之处,const,register,三目运算符,&引用
- C++函数后加 const 的意义
- C++:‘std::ostream& String::operator<<(std::ostream&, const String&)’ must take exactly one argument
- C++&nbsp;static、const和static&amp;n…