簡體   English   中英

為什么以及何時刪除復制構造函數和運算符 =

[英]Why and when delete copy constructor and operator=

作為 C++ 新手,我想知道為什么顯式“禁用”或刪除類的 = 運算符和復制構造函數很有用:

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

我想如果該類是單身人士,這是有道理的。 但是還有其他情況嗎? (也許這與性能問題有關?)

這與性能無關。 當復制您的類沒有意義時,您禁止復制,即如果不清楚復制相關類的含義。

著名的例子是具有復雜內部狀態的標准 IO 流和無法復制的std::unique_ptr ,因為它是指向其托管對象的唯一指針。

我認為以下是一個很好的補充:

如果您想禁止按值傳遞對象,您可以刪除它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM