gpt4 book ai didi

c++ - 如果参数被存储,是否会被复制

转载 作者:行者123 更新时间:2023-11-28 02:24:58 25 4
gpt4 key购买 nike

如果参数存储在以下情况下是否被复制

传递的文字字符串:

std::string globalStr;
void store(const std::string &str)
{
globalStr = str;
}
store("Literal");

传递的变量字符串:

std::string globalStr;
void store(const std::string &str)
{
globalStr = str;
}
store(varStr);

如果 globalStr 存储引用怎么办

std::string &globalStr;
void store(const std::string &str)
{
globalStr = str;
}
store("Literal"); //Should this cause any problem?
store(varStr);

C++ 是否优化以防止在上述任何情况下进行不必要的复制?

最佳答案

Does C++ optimize to prevent making unnecessary copies in any of the above cases?

没有。

标准只是保证,在第一种和第二种情况下,str 的值将被复制到 globalStr,使用 std::string::运算符=()

根据您的 STL 实现,如果 std::string 使用写时复制优化,则可能会避免深度复制。

第三种情况不会编译,因为引用在初始化后无法重新分配。

关于c++ - 如果参数被存储,是否会被复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31063429/

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