2015-12-15 26 views
1

爲C++ newbe我不知道爲什麼它是有用的,以明確地「禁用」或刪除=運算符和複製類的構造函數:爲什麼以及何時刪除拷貝構造函數和operator =

SomeClass& operator=(SomeClass&) = delete; 
SomeClass(SomeClass&) = delete; 

我猜這使得如果班級是一個單身人士,就會感到驚訝。但是還有其他情況嗎? (也許這與性能問題有關?)

回答

4

這與性能無關。只要複製課程沒有意義,即不清楚複製有問題的課程意味着什麼,則不允許複製。

着名的例子是具有複雜內部狀態的標準IO流和std::unique_ptr,它們不能被複制,因爲它是指向其被管理對象的唯一指針。

+0

如果我沒有明確地指定一個,那麼是否會有默認實現? –

+0

@little_planet在某些情況下,是的。作爲參考,參見例如http://en.cppreference.com/w/cpp/language/copy_constructor。如果您對此有任何疑問,那麼這將成爲SO上一個全新的問題的理由。 –

相關問題