In this question解決的辦法是刪除Copy CTOR和賦值運算符。我不明白你爲什麼需要禁用賦值運算符?它可以是不可複製的,但仍可分配,對嗎?爲什麼要刪除operator = for noncopyable type?
當你定義一個單例類時,會發生同樣的事情。如果您只有一個實例,爲什麼需要禁用分配? :)
In this question解決的辦法是刪除Copy CTOR和賦值運算符。我不明白你爲什麼需要禁用賦值運算符?它可以是不可複製的,但仍可分配,對嗎?爲什麼要刪除operator = for noncopyable type?
當你定義一個單例類時,會發生同樣的事情。如果您只有一個實例,爲什麼需要禁用分配? :)
這將使一些像這樣的代理副本:
NotCopyable a, b;
b = a; // Made a copy of a
這是非常不可能的,你不想拷貝構造,但拷貝賦值。移動分配當然是不同的處理,參見例如。 std::unique_ptr
。
辛格爾頓基本上是一樣的。爲什麼允許自我分配?這只是沒有意義。
通常,不可複製的東西也不可分配。我很難發明一個真實的例子,在這個例子中,複製是不允許的,但是分配是可以的。
在附註中,有很多例子是不可分配的,但可複製的。
複製構建和複製分配都被認爲是複製。
用你自己的話說,你對可分配對象的理解是什麼,但不可複製?你想在這種情況下發生什麼? – NoseKnowsAll
你仍然會在右邊複製這個東西,不是嗎? – molbdnilo