簡體   English   中英

刪除復制構造函數是否也會刪除默認的復制/移動運算符?

[英]Does deleting the copy constructor also deletes default copy/move operators?

我有一個課程,我不打算復制/移動,並希望確保我不會意外地這樣做。

class Foo {
public:
  Foo(const Foo&) = delete;

  // Are these 3 needed?
  Foo(Foo&) = delete;
  Foo& operator=(const Foo&) = delete;
  Foo& operator=(Foo&&) = delete;
}

有沒有刪除移動構造函數和/或移動/復制賦值運算符的目的,還是刪除復制構造函數會自動告訴編譯器不生成它們?

查看有關 何時隱式刪除此類功能的列表 因此,在不重復紀錄片中所寫內容的情況下,簡短回答您的問題:

有沒有刪除移動構造函數和/或移動/復制賦值運算符的目的[...]?

是的,當然有。 即使它只是以冗余方式強調強調不允許特定操作,因此它可能使代碼的界面更具表現力。

暫無
暫無

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

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