gpt4 book ai didi

c++ - 返回临时的 const 引用

转载 作者:行者123 更新时间:2023-12-05 09:01:34 24 4
gpt4 key购买 nike

为什么函数foo给出警告“returning reference to temporary”

const bool& foo()
{
return true;
}

如果像这样声明 bar 是好的并且不会产生任何类型的警告

const bool& bar = true;

PS: 我正在使用 GCC

最佳答案

第二个很好,因为 lifetime of temporary booltrue 构造,将延长引用 bar 的生命周期。

Whenever a reference is bound to a temporary object or to a subobject thereof, the lifetime of the temporary object is extended to match the lifetime of the reference

但是生命周期规则不适用于第一种情况。

There are following exceptions to this lifetime rule:

  • a temporary bound to a return value of a function in a return statement is not extended: it is destroyed immediately at the end ofthe return expression. Such return statement always returns a danglingreference.

所以 foo 总是返回一个悬空引用。

关于c++ - 返回临时的 const 引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73074052/

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