c 移動建構函式解決多執行緒物件複製問題

2021-10-24 05:02:02 字數 692 閱讀 1327

主線程啟動子執行緒時,會複製物件,造成成本開銷,鑑於子執行緒需要自動釋放記憶體的問題,建立子執行緒時不能傳遞物件指標,只能按照值傳遞物件(形參分配在棧上,通過值傳遞的物件可以自動釋放)。

按照值傳遞就會產生物件複製問題,又因為不能傳遞指標,只能通過移動建構函式降低記憶體成本。

直接看**及執行 結果:

#include #include #include using namespace std;

class school

~school()

school(const school& s) };

class person

};person::person()

person::~person()

person::person(const person& p)

person::person(person&& p) noexcept

int main()

拷貝建構函式和移動建構函式執行結果如下

看執行結果可以看出,school物件少了一次拷貝。

C 多執行緒物件導向解決方案

相信很多人都讀過 c 沉思錄 這本經典著作,在我艱難地讀完整本書後,留給我印象最深的只有一句話 用類表示概念,用類解決問題 關於多執行緒程式設計,如果不是特別需要,大多數開發人員都不會特意去觸碰這個似乎神秘的領域。如果在某些場合能正確並靈活地運用,多執行緒帶來的好處是不言而喻的。然而,任何事物都有兩...

C 多執行緒物件導向解決方案

相信很多人都讀過 c 沉思錄 這本經典著作,在我艱難地讀完整本書後,留給我印象最深的只有一句話 用類表示概念,用類解決問題 關於多執行緒程式設計,如果不是特別需要,大多數開發人員都不會特意去觸碰這個似乎神秘的領域。如果在某些場合能正確並靈活地運用,多執行緒帶來的好處是不言而喻的。然而,任何事物都有兩...

C C 類和物件 物件移動和移動建構函式

c 11引入物件移動 進行所有權的轉移 移動建構函式和移動賦值運算子應該完成的功能 引入目的 提高程式效率 說明 a b,那麼a物件就不能再使用了 拷貝建構函式 class temp temp temp const temp tmp 引數是const左值引用移動建構函式 class temp tem...