move-constructor

    2熱度

    2回答

    關於此問題還有一次,但相關問題不回答我的問題。 的標準是相當清楚的: 12.8複製和移動類對象, §9 如果一個類X的定義不明確宣佈此舉的構造函數,一個會被隱式聲明作爲默認當且僅當 - X沒有一個用戶聲明的拷貝構造函數, - X沒有一個用戶聲明的拷貝賦值運算符, - X沒有一個用戶聲明莫ve賦值運算符, - X沒有用戶聲明的析構函數,並且 - 移動構造函數不會被隱式定義爲已刪除。 [注意:當移動構

    2熱度

    2回答

    我目前正在使用C++中的自定義分配器。這個分配器必須定期對內存進行碎片整理,移動內存和物體。這些移位總是向下,這意味着移動的內存塊的地址在移動時總是減少。當舊內存塊和新內存塊不重疊時,這樣做沒有問題。如果它們重疊,我首先必須將對象移動到分配器內存之外的臨時區域,然後將其移回新的內存塊。 如果移動類型的std :: is_trivially_move_constructible爲true,那麼如果在

    -3熱度

    2回答

    我有一個對象,我想要精確構造一次,因爲它所在的類通過向它們添加原始指針來跟蹤它的對象。構建它內嵌看來雖然失敗: // Defined utilities: ModuleClusterPlot(Type typeArg, const int& layer, const int& module, const int& ladder, const int& startEventArg, const i

    4熱度

    2回答

    我一直有困難在C++中理解移動構造函數。我用默認構造函數,複製構造函數,移動構造函數和析構函數做了一個簡單的類。另外,我定義了一個帶有兩個重載的函數,一個接受對該類的引用,另一個接受對該類的右值引用。我的測試代碼如下。 #include <iostream> class c { public: c() { std::cout << "default constru

    2熱度

    1回答

    我想檢測(並使用std::enable_if中的結果)C++類是否定義了移動構造函數。 下面的程序打印MOVE,所以使用std::is_move_constructible是不是做的方式: #include <stdio.h> #include <type_traits> class C { public: C() { puts("C()"); } C(int) { pu

    3熱度

    1回答

    #include<iostream> #include<utility> #include<tuple> #include<functional> using namespace std; int main() { int i = 0; auto p = make_pair(ref(i), ref(i++)); p.first++; p.seco

    1熱度

    1回答

    說我有一個A類型的對象。 如果我想將它移動到函數foo(A)。 一個選項是做foo(std::move(a)),它將調用移動構造函數。 但是,假設我正在使用一個我無法控制的類。如果我仍然想要移動這個類型,這不就足夠了嗎? std::unique_ptr<A> a_ptr(new A()); foo(std::move(a_ptr)); 與foo更改爲接受unique_ptr。 兩者是否相似(

    -2熱度

    3回答

    類 我有容器,其中包含std::vector<std::shared_ptr<Base> > VEC shared_ptr的基類Base,也該容器具有功能add(Base&& base) - 通過使用std::move運營商將基本對象,以VEC,但是派生轉移構造不調用,只調用基礎構造函數。 如何解決:我應該將其轉換爲Derived,使用dynamic_cast<Derived*>(&base),之

    2熱度

    1回答

    我有這樣的結構 struct A { A() { cout << "Default\n"; } A(const A& a) { cout << "Const lvalue\n"; } A(const A&& a) { cout << "Const rvalue\n"; } A(A& a) { cout << "Lvalue\n"; } A

    0熱度

    1回答

    我已經使TestClass更好地說明了問題。 正如你所看到的,當對象被壓入vector並且使用std::move函數初始化構造函數時,會調用move構造函數。 但是,當我們調用TestClass testvar2(rvalue_func());你可以看到底,該rvalue_func()的結果值分配給testvar2對象,但此舉構造不叫,也沒有其他的構造函數或賦值操作符被稱爲... 問題: 它是如何