我刚刚听完了Scott Meyers关于C++ 0x的软件工程电台播客采访.大多数新功能对我来说都很有意义,我现在对C++ 0x感到兴奋,除了一个.我仍然没有得到移动语义 ......它们究竟是什么?
我想重载一个函数,以便它以某种方式操作它的参数,然后返回对参数的引用 - 但如果参数不可变,那么它应该返回参数的操纵副本.经过多年的讨论,这就是我想出来的.
using namespace std;
string& foo(string &in)
{
in.insert(0, "hello ");
return in;
}
string foo(string &&in)
{
return move(foo(in));
}
string foo(const string& in)
{
return foo(string(in));
}
Run Code Online (Sandbox Code Playgroud)
这段代码似乎工作正常,但我很想知道是否有人能想到更好的方法来做到这一点.
这是一个测试程序:
int main(void)
{
string var = "world";
const string var2 = "const world";
cout << foo(var) << endl;
cout << var << endl;
cout << foo(var2) << endl;
cout << var2 << endl;
cout << foo(var + " and " + var2) << endl;
return …Run Code Online (Sandbox Code Playgroud)