gpt4 book ai didi

c++ - 返回左值的函数,总是返回左值引用

转载 作者:行者123 更新时间:2023-12-03 06:49:45 29 4
gpt4 key购买 nike

有效 C++ 的第 3 项中的 Scott meyers 说

Applying decltype to a name yields the declared type for that name. Names are typically lvalue expressions, but that doesn’t affect decltype’s behavior. For lvalue expressions more complicated than names, however, decltype generally ensures that the type reported is an lvalue reference. That is, if an lvalue expression other than a name has type T, decltype reports that type as T&. This seldom has any impact, because the type of most lvalue expressions inherently includes an lvalue reference qualifier. Functions returning lvalues, for example, always return lvalue references.


他说函数返回左值是什么意思,例如,总是返回左值引用

最佳答案

这意味着它所说的!
没有办法使函数返回类型不是 T& ,但调用它会产生一个左值表达式。
每个其他返回类型都会导致函数调用成为右值表达式。
当你考虑到“返回”已经存在的东西的唯一方法是通过引用时,这是很直观的——函数调用的结果总是“临时的”,无论是因为它正在复制一些局部变量,还是因为它从一些局部变量。
此规则的可能异常(exception),返回 T&& , 也不适用,因为它们会产生右值表达式(这就是移动语义起作用的原因,因为只有右值表达式才能继续绑定(bind)到 T&& 参数)。
Scott 正在报告语言规则的结果,并告诉我们同样的结果被用作 decltype 规则之一的理由。 .
可以说,他可以更清楚地表达出来:

The only functions whose calls evaluate to lvalues, are those that return lvalue references.

关于c++ - 返回左值的函数,总是返回左值引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64862374/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com