试图清除我对何时发生移动的理解,以及何时编写通过值而不是引用传递值的函数以从移动中获益。
void foo()
{
std::string localStr;
//
foo1(localStr);
}
void foo1(const std::string str)
{
}
在这种情况下 localStr 会被移到 foo1 中吗?
如果要添加更多级别的函数调用:
void foo()
{
std::string localStr;
//
foo1(localStr);
//localStrisn't used anymore
}
void foo1(const std::string str)
{
foo2(str);
//str isn't used anymore
}
void foo2(const std::string str)
{
}
会不会有两个动作?