假设我们有这两个功能:
std::string foo()
{
return "myString";
}
和
std::string goo()
{
return std::string("myString");
}
我想在foo
中将构造字符串,然后复制然后返回,而在第二个字符串中它将被构造和移动。
我说错了吗?或两种情况都一样?
答案 0 :(得分:2)
它取决于NRVO/RVO
和c ++标准(移动或复制构造函数)。
但两种情况都是一样的。
在一个中您隐式转换为std::string
但在第二种情况下您已明确创建了一个对象:
return std::string("myString");