【发布时间】:2018-08-14 22:28:46
【问题描述】:
唯一失败的情况是通过非常量引用传递参数, 因为临时变量不能绑定到它。
void DrawLine(const Vector& v1, const Vector& v2);
如果对象是临时的,为什么引用 const 会对临时对象的生命周期产生任何影响?
我想我也没有完全理解在参数中创建的临时对象的存在范围。
【问题讨论】:
-
@MarcGlisse 一定是有原因的。我敢肯定他们不只是抛硬币。
-
这可能只是解决为“它很有用”。但我会密切关注这一点,看看会出现什么。
-
您的问题令人困惑。您是否在问为什么绑定到临时的 const 引用会延长它的生命周期(如在您的身体中)?还是您在问为什么可以将 const 引用绑定到临时对象并将其传递给以这种方式运行(正如您的标题和代码 sn-p 所暗示的那样)?请注意,在您的代码中没有生命周期延长。
-
如果您致电
Drawline(Vector{}, Vector{});,则不会延长生命周期。两个临时Vectors 的生命周期都在完整表达式的末尾结束,因此您可以在函数中使用它们。另一方面,如果你写auto const& v = Vector{};,临时的生命周期会延长到与v相匹配。那么您要问的是哪一个?
标签: c++ stack pass-by-reference