gpt4 book ai didi

c++ - const 临时类型的最佳实践

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:10:41 25 4
gpt4 key购买 nike

<分区>

假设我正在做一个涉及创建一个我不会修改的临时对象的计算:

auto tmp = val * val;
// Do some calculations with tmp...

此外,我不需要 tmp 是一个左值,因为我不会获取它的地址。

在这些情况下,我应该在我的代码中使用哪种习语:

1.       auto    tmp = val * val;
2. const auto tmp = val * val;
3. const auto & tmp = val * val;
4. auto && tmp = val * val;
5. const auto && tmp = val * val;

请注意,我明确放弃了 auto &,因为这通常会导致 UB。但是,我知道 const auto & 会延长临时生命周期,因此我将其留作此处的选项。

不出所料,对于这个简单的例子,-O3 无论如何都会编译成相同的代码:https://godbolt.org/z/oXj3hd

但在一个更复杂的例子中,我想他们不会。

我的想法是选项 3 或 5 可能是最正确的,因为它们将保留对象的常量性,并且因为它们将保存临时对象。

编辑:

很多人都提到在这个简单的例子中,甚至不需要命名临时文件。那是对的。我所追求的是当生成临时值的表达式很复杂并且将在代码中重复使用时如何操作的建议。

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