gpt4 book ai didi

c++ - C++ 临时变量的生命周期

转载 作者:行者123 更新时间:2023-11-30 05:12:22 30 4
gpt4 key购买 nike

我的问题是关于 C++ 中的临时变量以及如何最好地避免它们的陷阱。

在某些情况下,我们会执行类似以下操作:

SomeFunctionReturningStdString().c_str();

其中 SomeFunctionReturningStdString() 按值返回 std::string

然而,我们发现这会导致未定义的行为,并提出了两个解决此问题的建议:

std::string temp = SomeFunctionReturningStdString();
temp.c_str();

..类似于此 link 中指定的解决方案.

或者让 SomeFunctionReturningStdString() 通过引用返回一个 std::string。这样一来,如果我的理解是正确的,那么就永远不会创建临时对象,因为我们现在有了对该对象的引用。

两种解决方案都有效吗?他们都能避免与临时变量相关的陷阱吗?

最佳答案

Are both solutions valid?

第一个有效。

如果您返回引用的对象在 SomeFunctionReturningStdString() 返回后仍然存在,则第二个将有效。如果不查看 SomeFunctionReturningStdString() 中的代码以及它返回引用的对象是如何定义的,就不可能判断这是不是真的。

除非存在性能问题,否则最好使用第一种解决方案。将更易于理解和维护。

关于c++ - C++ 临时变量的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44577893/

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