杰表技术论坛 's Archiver

admin 发表于 2019-6-8 20:55

c++ 中的 rvalue ,lvalue

void f(const A & a)
{
     不能改

绑定到右值,退出scope,即退出函数销毁

绑定到左值,退出不析构

}

A a1;
f(a1); // 左值调用
f(A()); // 右值调用




void f(A & a)
{
     能改;

绑定绑定到左值,

退出不析构

}

f(a1);// ok
f(A());// error

void f(A && a)
{
     能改;

只能绑定绑定右值,

退出析构

}

f(a1);// error
f(A());// ok

admin 发表于 2019-6-8 23:28

1.在 c++ 11 stl 的所有容器,已经实现了复制构造各移动构造函数,
2.在c++11中,传值调用,成本也不会很高
3.自定义函数中,要求右值引用传递的机会不多,右值传递的好处,是便stl效率大增
4. std::move作用是用移动构造函数创建一个临时对象

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.