1
爲C++ newbe我不知道爲什麼它是有用的,以明確地「禁用」或刪除=運算符和複製類的構造函數:爲什麼以及何時刪除拷貝構造函數和operator =
SomeClass& operator=(SomeClass&) = delete;
SomeClass(SomeClass&) = delete;
我猜這使得如果班級是一個單身人士,就會感到驚訝。但是還有其他情況嗎? (也許這與性能問題有關?)
爲C++ newbe我不知道爲什麼它是有用的,以明確地「禁用」或刪除=運算符和複製類的構造函數:爲什麼以及何時刪除拷貝構造函數和operator =
SomeClass& operator=(SomeClass&) = delete;
SomeClass(SomeClass&) = delete;
我猜這使得如果班級是一個單身人士,就會感到驚訝。但是還有其他情況嗎? (也許這與性能問題有關?)
這與性能無關。只要複製課程沒有意義,即不清楚複製有問題的課程意味着什麼,則不允許複製。
着名的例子是具有複雜內部狀態的標準IO流和std::unique_ptr
,它們不能被複制,因爲它是指向其被管理對象的唯一指針。
如果我沒有明確地指定一個,那麼是否會有默認實現? –
@little_planet在某些情況下,是的。作爲參考,參見例如http://en.cppreference.com/w/cpp/language/copy_constructor。如果您對此有任何疑問,那麼這將成爲SO上一個全新的問題的理由。 –