![](/img/trans.png)
[英]Trying to use copy and swap idiom on operator=
在嘗試實施 MyVector 時,我最終得到: 其中operator=是 然而,這導致了似乎是遞歸行為。 那么,我對復制和交換方法的理解是錯誤的嗎? 還是我還缺少其他東西? ...
[英]Trying to use copy and swap idiom on operator=
在嘗試實施 MyVector 時,我最終得到: 其中operator=是 然而,這導致了似乎是遞歸行為。 那么,我對復制和交換方法的理解是錯誤的嗎? 還是我還缺少其他東西? ...
[英]Do I understand RAII in conjunction with the copy/swap idiom correctly?
管理資源句柄(文件句柄、gpu 句柄、互斥體)的 class 想要防止資源句柄被復制,因此包裝器 ZA2F2ED4F8EBC2CBB4C21A29DC40 的解構不會自動訪問資源句柄一次且僅一次因為 object 的生命周期已經結束,並且(希望)不再存在指向包裝器的引用或指針。 5(半)的復制/ ...
[英]swap elements in an array causing issue
新年快樂。 我有一個關於在 Python 環境下交換數組中的元素的問題。 沒有問題的代碼是: 有答案: 錯誤的是: 有答案: 我不確定為什么引用(我應該稱之為)會造成麻煩。 你介意詳細解釋一下嗎。 謝謝。 ...
[英]Pass by value vs. pass by reference in copy assignment operator
首先,有一個類似的流行帖子What is the copy-and-swap idiom? . 接受的答案有一個鏈接到https://web.archive.org/web/20140113221447/http://cpp-next.com/archive/2009/08/want-speed- ...
[英]Interaction between copy-and-swap idiom and move operations
我正在嘗試制作一個程序來實現“復制和交換”習語和move control operations之間的交互,因此我編寫了以下代碼: 對我來說一切都很好,所以我認為在1 ,copy-ctor 由 copy-asignment 運算符調用以初始化其參數(按值獲取),然后使用交換。 在“2”中,我從 ...
[英]Why does copy-and-swap in a base class cause the copy-assignment operator to be implicitly deleted in the derived class?
僅在GCC和Clang 中測試,基類中存在按值傳遞的復制賦值運算符(在實現復制和交換(或復制和移動)習慣用法時很有用)導致復制賦值運算符在派生類被隱式刪除。 Clang 和 GCC 同意這一點; 為什么會這樣? 示例代碼: ...
[英]error: ambiguous overload for 'operator=' in swap function using the copy-and-swap idiom
在具有常量引用作為成員的 class 中使用復制和交換習語時,會發生上述錯誤。 示例代碼:#include <iostream> #include <functional> using std::reference_wrapper; class I_hold_refere ...
[英]why isn't my copy constructor called when I do a copy and swap idiom?
在下面的代碼中,當使用賦值運算符時,為什么沒有調用復制構造函數或為什么沒有與之對應的打印? 上面代碼的輸出是: Person copy constructor with Ryan Person copy constructor with Ryan Person copy assignm ...
[英]Copy&Swap efficiency for shared pointers
這可以看作是后續操作,例如為什么“交換”共享指針分配? 。 問題是關於在boost中使用的Copy&Swap習慣用法。 我確實知道復制和交換的好處是重用了現有代碼,從而避免了重復和錯誤。 但是有2種情況(並非只有1種可以減少到其他情況)不是最佳的: 智能指針實例相同 ...
[英]What does `std::swap` do when applied to these objects?
編碼 預期的輸出 從cplusplus.com> std :: swap在復雜性下 非數組:常量:精確地執行一種構造和兩種分配(盡管請注意,這些操作中的每一種都基於其自身的復雜性)。 數組: N中的線性:每個元素執行交換操作。 這是否意味着將std ...
[英]What is the Rule of Four (and a half)?
為了正確處理 object 復制,經驗法則是三法則。 對於 C++11,移動語義是一回事,所以它是五法則。 但是,在這里和互聯網上的討論中,我還看到了對四規則(半)的引用,它是五規則和復制和交換習語的組合。 那么究竟什么是四法則(半法則)? 需要實現哪些功能,每個功能的主體應該是什么樣的? 哪個f ...
[英]How to correctly make deep copy for abstract classes?
我正在研究一個碰撞系統,我需要為其復制實體的對撞機。 我制作了這樣的系統,例如我不必一成不變地想如何處理碰撞(而且我可能會開始使用AABB,但可能會更改為SAT),但是無論如何我都需要制作對撞機的深層副本將使用。 一方面,必須進行深度復制,而復制和交換的習慣用法似乎是我應該去的地方。 ...
[英]Copy & Move Idiom?
通過使用Copy&Swap習語,我們可以輕松實現具有強大異常安全性的副本分配: 然而,這需要T是可交換的 。 如果std::is_move_constructible_v<T> && std::is_move_assignable_v<T> == ...
[英]copy-swap idom : what if I change the class members?
我有一堂課 為了使用copy-swap習慣用法,我然后創建函數 如果以后再更改類並刪除成員a ,則編譯器將在swap函數中抱怨,這很好。 但是,如果我添加一個新成員,我的swap功能將不再正確。 為了不忘記將新成員添加到交換功能,該怎么辦? ...
[英]linking error in friend function of a template class
我有模板類節點,為了遵循復制和交換習慣用法,我嘗試編寫swap函數,這是類Node的friend 我的代碼是: Node.h 和Node.tpp 當我從Source.cpp測試它 我收到以下鏈接錯誤 : ...
[英]Why do we use copy and swap when using assignment operator?
使用復制和交換方法時,我對賦值運算符有疑問。 假設我們有一個很好的復制構造函數,它可以深度復制所有指針和動態分配的變量。 那么,上面的代碼和下面的代碼有什么區別? 因為我們有一個好的復制構造函數,所以我認為在operator =函數內部創建了另一個對象s。 那么,使用非拋 ...
[英]Implementing the swap in the copy and swap idiom
下面什么是復制和交換習慣用法以及如何為我的班級提供交換功能 ,我嘗試實現交換功能,如后面接受的答案選項2(具有調用成員函數的自由函數)而不是直接友好前鏈接中的自由功能。 但是以下不編譯 我知道復制和交換習慣在這里是過度的,但它也允許通過復制構造函數(1)對內部狀態強制執行一些約束( ...
[英]Reset an object
最近,我經常通過使用operator=為其分配新值來重置對象。 我的大多數課程都有一個copy constructor和operator=使用“ copy and swap”慣用語定義。 在大多數情況下,它雖然沒有達到應有的效率,但卻可以正常工作,但這在大多數情況下都沒有關系。 在一種情況 ...
[英]Why does std::vector have two assignment operators?
自2011年以來,我們同時擁有復制和移動任務。 但是, 這個答案非常有說服力地說,對於資源管理類,只需要一個賦值運算符。 例如,對於std::vector ,這看起來像 這里重要的一點是,論證是以價值為基礎的。 這意味着在輸入函數體的時刻,大部分工作已經由other構造完成(如果可 ...
[英]When is copy-and-swap idiom not applicable
看完此有關的復制和交換成語我讀過這個這下稱(2): (2)當不能使用復制和交換習語時,復制賦值運算符的典型聲明 我們何時應該避免使用復制和交換習慣用法? 什么時候“完全不能使用”? 是否有現實生活中的情況,即復制和交換以及零規則都不適用? 我確實找到了這個問 ...