C++11 std::shared_ptr的std::move()移动语义底层分析
生活随笔
收集整理的这篇文章主要介绍了
C++11 std::shared_ptr的std::move()移动语义底层分析
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
std::shared_ptr的std::move()移动语义底层分析
执行std::move()之前:
执行std::move()之后:
结论:一个浅拷贝
sizeof(std::shared_ptr) = 8字节
pss1 : 0x0028fea8
pss2 : 0x0028fea0
(栈是逆增长的)
观察执行std::move前,pss1 : 0x0028fea8 开始的8个字节的值,
然后执行后 pss1 : 0x0028fea8开始的8个字节的值复制到 pss2 : 0x0028fea0 后,清零pss1 : 0x0028fea8 开始的8个字节的值。
过程:
std::move()的功能是将一个左值转换为右值,
所以执行std::stdred_ptr<> pss2(std::move(pss1))时,是调用了std::shared_ptr<>的移动构造函数(移动构造是需要一个右值),而该移动构造函数是一个浅拷贝的操作。
总结
以上是生活随笔为你收集整理的C++11 std::shared_ptr的std::move()移动语义底层分析的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: “叵吝节荣衰”上一句是什么
- 下一篇: C++11 右值引用与常量左值引用保存临