gpt4 book ai didi

c++ - "std::string + char"表达式是否创建另一个 std::string?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:33:13 25 4
gpt4 key购买 nike

下面的表达式是否创建了另一个 std::string 然后将其添加到 s1?

    std::string s1 = "abc", s2 = "xyz";
s1 += s2 + 'b';

它是否应该防止这种情况(它们无需额外工作就可以添加到 s1)?

    std::string s1 = "abc", s2 = "xyz";
s1 += s2;
s1 += 'b';

这些规则是否也适用于“std::string + std::string”表达式?

最佳答案

所有涉及 std::string 的重载 + 运算符都会返回一个新的 std::string 对象。这是您在you finally decipher the relevant documentation时得出的必然结论。 .

因此,在您问题的第一个示例中, + 运算符将返回一个临时对象,该对象将在紧随其后的 += 完成后被销毁操作。

话虽如此:允许 C++ 编译器采用任何产生相同可观察结果的优化。 C++ 编译器极有可能发现,通过将代码的第一个版本转换为第二个版本,本质上可以避免创建临时对象的需要。我认为这不太可能,但这是可能的。两个版本的代码在结果上没有明显差异,因此优化是公平的。

但是,从技术上讲,+ 操作会生成一个临时的 std::string 对象。

关于c++ - "std::string + char"表达式是否创建另一个 std::string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41353227/

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