C++ 新特性学习(七) — 右值引用
class foo {
public:
int m;
foo(){ puts("directly"); }
foo(const foo&){ puts("copy"); }
foo(int i){ puts("int"); m = i; }
};
foo foo_func1(int flag)
{
if(flag == 1)
return foo();
if(flag == 2)
return foo(1);
// 此处返回值优化就是个渣渣
foo retv;
return retv;
}
foo&& foo_func2(int flag)
{
if(flag == 1)
return foo();
if(flag == 2)
return foo(1);
// 返回值优化就这么跪了
foo retv;
return std::move(retv);
}
foo rr1 = foo_func1(0); // 1
foo&& rr2 = foo_func2(0); // 2std::move 提取右值引用
std:: forward 引用参数转发
Last updated
Was this helpful?