c++ - 按 const 值返回的目的?

标签 c++ constants

这个const的目的是什么?

const Object myFunc(){
    return myObject;
}

我刚开始阅读 Effective C++,第 3 条提倡​​这一点,谷歌搜索会找到类似的建议,但也有反例。我看不出在这里使用 const 会更好。假设按值返回是可取的,我认为没有任何理由保护返回的值。给出的示例说明为什么这可能会有所帮助,以防止对返回值进行意外的 bool 强制转换。那么实际的问题是应该使用显式关键字来防止隐式 bool 转换。

在这里使用 const 可以防止使用没有赋值的临时对象。所以我不能用这些对象执行算术表达式。似乎从来没有一个未命名的 const 有用的情况。

在这里使用 const 有什么好处,什么时候更可取?

编辑:将算术示例更改为修改您可能希望在赋值之前执行的对象的任何函数。

最佳答案

在您可以对对象执行潜在昂贵的非常量操作的假设情况下,通过 const-value 返回可防止您意外地临时调用此操作。想象一下 + 返回一个非常量值,你可以这样写:

(a + b).expensive();

然而,在 C++11 时代,强烈建议将值作为非常量返回,以便您可以充分利用仅对非常量右值有意义的右值引用。

总之,这种做法一个基本原理,但它基本上已经过时了。

关于c++ - 按 const 值返回的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8716330/

相关文章:

c++ - g++ 编译存在于另一个目录中的源文件

C++ 到 C 代码的转换,是否等价?

c++ - 当 constexpr 函数出错时会发生什么?

android - 在android上将openGL渲染与c++游戏循环同步

c++ - 在 C 和 C++ 库之间共享变量的困境

php - 人们曾经使用过variable.php 文件吗?

c++ - 在 C++ 中更改 const 值的方法

static - PHP 常量 - const、定义、静态

c++ - 如何在没有cpp文件的情况下使用头文件

c++ - 鉴于某些函数是常量而其他函数是非常量,正确使用/修改 QString