在C++中按值返回的原因是什么

use*_*421 1 c++

因为按值返回大多数时候比返回引用效率低,所以有哪些例子按值返回是有意义的还是唯一可行的方法呢?

编辑:我错误地说了我的问题.我知道对于内置类型,通过值返回通常更有效率我主要指的是返回大于指针的用户定义类型的情况.

Luc*_*ore 7

你错过了这里的重点 - 通过引用返回并不总是有意义,也不总是合法的.通过引用返回本地会导致未定义的行为.您可以通过引用返回超出函数范围的变量,该变量可以是:

  • 动态分配 - 糟糕的想法,你必须自己管理生命周期
  • 类的成员 - 这通常与具有2个版本的getter一起使用:一个返回引用并且可以修改成员或const返回const引用的getter
  • 一个static往往不是,这是没有必要在功能只是用于通过参考返回-局部变量(或具有静态存储任何变量).

NRVO在实践中使得价值回报变得可行,因此,除非您有明确的指标,表明按价值返回是一个瓶颈,不要担心它.相反,担心任何暗示的语义.