首页 > 解决方案 > 使用移动语义正确返回 std::string

问题描述

考虑一个返回大字符串的函数:

std::string build_huge_string(unsigned long size)
{
    std::string result;
    result.reserve(size);

    for (unsigned long i = 0; i < size; ++i)
        result.push_back(i % 256);

    return result;
}

它在某处可能像这样使用std::string huge_string = build_huge_string(65536); 有没有办法确保在不复制 64KB的内容的result情况下将其内容移入?huge_string

这是默认情况下发生的吗?应该build_huge_string退货std::string&&吗?应该return result;换成return std::move(result);?

标签: c++c++11move-semantics

解决方案


推荐阅读