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

原创 2006年05月22日 14:40:00

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

相关文章推荐

关于const与临时变量与函数返回值

c++中函数的返回值是存储在临时变量中的 下面是个实验 如图,func2函数建立的引用不是func1形参x的引用,而是临时变量的引用 (这个引用比指针好用,因为你无法取得临时变量的地址,所以无法建...

c/c++中const成员函数的返回值类型

const成员函数又称为访问函数,在const函数体内不能修改成员变量的值。 那么对于const函数的返回值呢? 结合网上内容,写了一个小的实验代码, class T{ public: struct...

【转载】const用法详解,如何修饰变量,返回值以及成员函数

const关键字是用来修饰一个变量使其成为常量(constant)的。常量只能在定义时进行初始化,而此后对这个变量的任何改变都将是非法的。const关键字在就是为了保证了它修饰的对象不被修改。 ...
  • xrloyx
  • xrloyx
  • 2011年09月13日 22:37
  • 235

返回值为引用或指针的成员函数加const要注意

成员函数与const         对于不改变类内部成员的成员函数,我们都要在函数后面加上const,对于会改变数据成员的函数则不加const。对成员函数加上const有明确的限制行为:调用该成员...
  • dwljd
  • dwljd
  • 2013年06月08日 12:43
  • 365

const总结三 之 常量函数返回值

先贴代码: class Return { public: Return(void); ~Return(void); const int getInt(); const int* getInt...

【从C到C++学习笔记】引用/const引用/引用传递/引用作为函数返回值/引用和指针的区别

C++中的const用法【02】----函数的参数和返回值

如果按值传递对象,它意味着传递的参数在函数中是不能被修改的。 如果按常量返回用户定义类型的对象的值,这意味着返回值不能被修改。 如果传递参数并返回地址,const 将保证改地址不会被改变。 ...

[C/C++] const 详解(修饰变量、输入参数、返回值、成员函数)

看到const关键字,程序员首先想到的可能是const 常量。 const 更大的魅力是它可以修饰函数的参数、返回值,甚至函数的定义体。 const 是constant 的缩写,“恒定不变...

const 修饰函数参数,返回值,函数体

看到const 关键字,C++程序员首先想到的可能是const 常量。这可不是良好的条件反射。如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮。const 更大的魅力是它可以修饰函数的...

修饰函数和函数返回值的const的差别

const用于修饰函数时,一般是const修饰类的成员函数(函数定义体),表示在函数体中成员变量不能改变; 其函数形式为:int ff(void)const; const修饰函数的返回值,用于返回...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:为什么有的函数的返回值为const?
举报原因:
原因补充:

(最多只允许输入30个字)