C++右值引用

转载https://zhuanlan.zhihu.com/p/97128024

> 类型 && 引用名 = 右值表达式;
1.右值引用的存在并不是为了取代左值引用,而是充分利用右值(特别是临时对象)的构造来减少对象构造和析构操作以达到提高效率的目的。

2.int &&var = 10;右值引用用来绑定到右值,绑定到右值以后本来会被销毁的右值的生存期会延长至与绑定到它的右值引用的生存期。

3.带右值引用参数的拷贝构造和赋值重载函数,又叫移动构造函数和移动赋值函数,这里的移动指的是把临时量的资源移动给了当前对象,临时对象就不持有资源,为nullptr了,实际上没有进行任何的数据移动,没发生任何的内存开辟和数据拷贝。

如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。
深拷贝一般使用new来自己开辟空间

编译器做了优化,导致结果与文章不一致。会不会编译器优化后的结果和右值引用的作用是一致呢?
图片说明
图片说明

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务