C++11——移动构造函数及std::move()

[复制链接]
219|7
手机看帖
扫描二维码
随时随地手机跟帖
keer_zu|  楼主 | 2023-2-18 10:25 | 显示全部楼层
移动构造是这样的:
就是让这个临时对象它原本控制的内存的空间转移给构造出来的对象,这样就相当于把它移动过去了。
3254263f036fb8da35.png

使用特权

评论回复
keer_zu|  楼主 | 2023-2-18 10:27 | 显示全部楼层
这里就存在一个疑问:可以对函数里面创建的对象(局部)做move吗?例如:

1165963f037724ef37.png

使用特权

评论回复
keer_zu|  楼主 | 2023-2-18 10:56 | 显示全部楼层
可以 move。但如果只是个结构体,没有对 move 优化的话,写了一点用都没有。
除非结构体里有 string、vector 之类的东西。

使用特权

评论回复
keer_zu|  楼主 | 2023-2-18 10:57 | 显示全部楼层
像容器类,栈上的 变量只存个指针,大头数据在堆上,或者是其他什么分配器分配的内存上
这种move有用,一般的struct move没用。

使用特权

评论回复
keer_zu|  楼主 | 2023-2-18 10:57 | 显示全部楼层
move 只是把左值变成右值引用。真正能不能移动要看你的操作(你这边的 push 里面实际用到的移动构造)能不能真正移动。如果你是个普通的结构体,里面也没有 string、vector 之类的东西,那这个移动就是个普通的拷贝。

使用特权

评论回复
keer_zu|  楼主 | 2023-2-18 11:01 | 显示全部楼层
本帖最后由 keer_zu 于 2023-2-18 11:10 编辑

C++ 11之 && 右值引用 - - 21ic电子技术开**坛

使用特权

评论回复
评论
keer_zu 2023-2-18 11:42 回复TA
** 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群:49734243 Email:zukeqiang@gmail.com

1304

主题

12233

帖子

53

粉丝