0
我想要一個具有三級繼承的類。我不會移動我的課程或複製它們。實際上,它們只會創建一次。我想測試是否有可能刪除移動和複製構造函數和分配如下:繼承和刪除複製和移動構造函數
MyClass (MyClass &&) = delete;
MyClass (const MyClass &) = delete;
MyClass & MyClass :: operator= (const MyClass &) = delete;
MyClass & MyClass :: operator= (MyClass &&) = delete;
當我這樣做,我得到了在基類構造函數和基基類的錯誤:
initializing argument 1 of ‘Base::Base(const int&)’ [-fpermissive]
我的構造是這樣的:
Base(const string & name):BaseOfBase(name){
};
我的問題是:
- 是否可以刪除所有的移動和複製構造函數和賦值運算符?
- 如果可能,爲什麼我會出錯?
- 如果是可能的話,這是一個不錯的選擇嗎?
通過刪除您禁止編譯器生成的移動構造函數拷貝構造函數,所以'MyClass的(MyClass的&&)=刪除;'是多餘的(同上分配運營商) –