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 右值引用与常量左值引用保存临