【C++】move() 右值的概念

https://www.jianshu.com/p/d19fc8447eaa

C++中所有的值都必然属于左值、右值二者之一。左值是指表达式结束后依然存在的持久化对象,右值是指表达式结束时就不再存在的临时对象。所有的具名变量或者对象都是左值,而右值不具名。很难得到左值和右值的真正定义,但是有一个可以区分左值和右值的便捷方法:看能不能对表达式取地址,如果能,则为左值,否则为右值

对于一个左值,肯定是调用拷贝构造函数了,但是有些左值是局部变量,生命周期也很短,能不能也移动而不是拷贝呢?C++11为了解决这个问题,提供了std::move()方法来将左值转换为右值,从而方便应用移动语义。我觉得它其实就是告诉编译器,虽然我是一个左值,但是不要对我用拷贝构造函数,而是用移动构造函数吧。。。

这个博客写的比较容易理解,自己对代码里return move(z) ;没看懂,去找了下move是干嘛的。

好像就是为了提高效率吧。

发布了68 篇原创文章 · 获赞 20 · 访问量 6872

猜你喜欢

转载自blog.csdn.net/qq_43633973/article/details/103066574