这里:
string s1("hi"),s2,s3;
s2=std::move(string("bye"));//正确:从一个右值移动数据
s3=std::move(s1);
书上说:在s2中传递给move的实参是string的构造函数的右值结果——string("bye")。
那可不可以直接传递"bye" 呢?这样传递的是一个左值还是右值?
基本概念是:左值 就是等号左的值,如果是数值,就不能赋值,出现赋值的情况就有问题;右值可以是变量或数值,都没有问题。
lvalue=rvalue
而扩展开来,有一个类a和返回数值的成员b那么下面表达式中,i 是一个左值,a也是一个左值,b 是一个右值,因为有点号操作符,在左边的就是左值,右边的就是右值
int i = a.b();
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。