move-assignment-operator

    3熱度

    1回答

    我有一個簡單的RAII包裝管理某些資源。這裏的接口: struct ResourceWrapper { explicit ResourceWrapper(RESOURCE resource); ResourceWrapper(const ResourceWrapper& other); ResourceWrapper& operator=(const Resourc

    0熱度

    1回答

    我不明白爲什麼爲什麼移動構造函數沒有被調用,而移動賦值能夠,而如果我使用X行中的移動函數,它用於調用移動構造函數。任何人都可以告訴什麼是調用移動構造函數的方式或語法。 #include <iostream> #include <cstring> #include <algorithm> #include <memory> using namespace std; class String

    6熱度

    2回答

    當定義自定義析構函數時,C++標準委員會選擇刪除隱式定義的移動賦值運算符的原理是什麼?

    0熱度

    1回答

    所以我寫了五大對於具有動態int數組 struct intSet { int *data; int size; int capacity; intSet(); ~intSet(); intSet(const intSet& is); intSet(intSet &&is); intSet &operator=(con

    3熱度

    2回答

    我(錯誤地)在我的程序如下分配: std::shared_ptr<SI::Program> m_program; // in class m_program = std::make_unique<SI::Program>(); // in method 當我發現這一點,我首先想知道爲什麼這甚至編譯。原來shared_ptr有一個特殊的移動賦值操作符unique_ptr對象。 我的問題是,這

    2熱度

    2回答

    我有一個類,移動任務被明確刪除,因爲對象不應該是可移動的。但是,如果我分配到使用這個RVO類的一個實例,編譯器給我的錯誤: main.cpp:12:16: note: candidate function has been explicitly deleted 也編譯器提現有的拷貝賦值運算符,但不使用它。 這裏是我的代碼(或(不)運行例如here): class foo { public:

    3熱度

    1回答

    我一直在閱讀Bjarne Stroustrup(C++的創建者)編寫的「C++編程語言第4版」一書,並且已經學習移動構造函數和移動作業。 在書中爲類向量(參見下面的標題1),他展示瞭如何實現移動構造函數(見下面的2),並表示移動任務是以類似的方式實現的,但並未顯示如何。我自己實現了這個移動任務(見下面的3),並且一切看起來都很好,但是,我不確定我是否已經正確實施了它。 我沒有收到任何錯誤,看過很多

    -1熱度

    2回答

    我想實現複製和移動任務,但我不明白我應該如何使用它們。我已閱讀以下主題 When did copy assignment operator called? 但它沒有爲我工作。 類: class Directory{ string name; public: Directory(string name):name(name) { } ~Direct

    1熱度

    2回答

    我不明白移動任務是否可以/自由地更改變量x的地址,並使所有存儲& x的指針和引用無效。 我覺得這是錯誤的,因爲默認的移動任務會移動每個成員並保留這個指針,但它是有保證的嗎? 編輯:實施例 int x(1), y(2); int& ref(x); x = std::move(y); // ref still valid ?

    4熱度

    3回答

    下面的代碼提供了錯誤: use of deleted function ‘constexpr B::B(const B&)’ 現在,我知道這是因爲拷貝構造函數是(故意)通過指定移動構造函數隱式刪除,並且複製該向量導致對(已刪除的)複製構造函數的調用。我想我也明白爲什麼使用vector的拷貝構造函數和賦值操作符。我清楚地想要使用移動構造函數和賦值運算符:移動對象,所以也移動它包含的矢量。那麼,如