簡體   English   中英

為什么shared_ptr具有移動構造函數

[英]Why does shared_ptr have a move constructor

在C ++ 11中, std::shared_ptr具有移動構造函數和移動賦值運算符。

是否有必要這樣做的原因,即如果只有復制構造函數和賦值運算符,使用它的任何程序的行為都會不同嗎?

似乎唯一的效果是避免了參考計數器的額外增加和以后的減少。

復制共享指針非常昂貴,因為需要以原子方式修改內部引用計數並使用正確的內存順序進行修改,這可能會導致總線鎖定和隔離。 (回想一下,多個線程可能正在復制擁有相同對象的自己的本地共享指針。)當您實際上想要所有權從一個對象轉移到另一個對象時,不需要這樣做,並且移動是上乘的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM