首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++11 刪除移動建構函數:`B(B&&) = delete;` 含義解析

     編輯:程式設計綜合問答

程式碼片段

struct B {
    B(B&&) = delete;
};

逐項解釋

  • B(B&&):移動建構函數,參數為右值參考(C++11 引入),用於從臨時物件「偷取」資源,避免深層複製。
  • = delete:顯式刪除 該特殊成員函數,使其不可被呼叫、不可被隱式產生。
  • 綜合起來:禁止類別 B 被移動建構。任何嘗試以右值初始化 B 的操作(如 `B b2 = std::move(b1);`、`return b;` 等)將導致編譯錯誤。

應用場景

  • 類別管理不可移動的資源(如互斥鎖、檔案控制代碼、執行緒特有狀態)。
  • 確保物件地址穩定,防止標準庫容器重新配置時移動物件。
  • 搭配 B(const B&) = delete; 可使類別不可複製、不可移動,僅允許原地建構。

相關知識點

  1. C++11 右值參考與移動語意。
  2. 特殊成員函數的預設生成規則(Rule of Five)。
  3. = delete / = default 顯式控制函數可用性。

此語法是現代 C++ 資源管理精細控制的基石之一。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved