gpt4 book ai didi

c++ - 按引用移动字符串?

转载 作者:行者123 更新时间:2023-12-01 15:04:52 26 4
gpt4 key购买 nike

在我的类里面,我写了以下几行:

string t1,t2;
MyClass(std::string tmp1, std::string tmp2) : t1(from), t2(to) {}
为了提高性能,我可以将其更改为:
string t1,t2;
MyClass(const std::string &tmp1, const std::string &tmp2) : t1(from), t2(to) {}
但是在那种情况下,类成员的原始参数不会共享相同的字符串吗? (都指向同一个对象)?

最佳答案

让我们从结尾开始:

But in that case won't the original arguments the the class members share the same string? (Both point at same object)?


您的每个字符串都是一个单独的值。它们之间没有共享任何内容,无论您从何处对其进行初始化。如果从 const&初始化字符串,则仍在复制数据。

To improve performance I could change it to:


您可以,但是完全没有任何改善的机会。您可能会跳过一个构造函数调用,但实际上无论如何都会对其进行优化。
编写此类代码的常见惯用法是捕获按值,如果以后需要存储该值,则移出该值。否则采用const-ref。
MyClass(std::string t1, std::string t2) : t1(std::move(t1)), t2(std::move(t2)) {}

关于c++ - 按引用移动字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63308371/

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