cost 266 ms
我是否正確理解 RAII 和復制/交換習語?

[英]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 環境下交換數組中的元素的問題。 沒有問題的代碼是: 有答案: 錯誤的是: 有答案: 我不確定為什么引用(我應該稱之為)會造成麻煩。 你介意詳細解釋一下嗎。 謝謝。 ...

復制和交換習語和移動操作之間的交互

[英]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 同意這一點; 為什么會這樣? 示例代碼: ...

當我復制和交換成語時,為什么我的復制構造函數不被調用?

[英]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種可以減少到其他情況)不是最佳的: 智能指針實例相同 ...

`std :: swap`應用於這些對象時會做什么?

[英]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> == ...

復制交換idom:如果我更改班級成員該怎么辦?

[英]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”慣用語定義。 在大多數情況下,它雖然沒有達到應有的效率,但卻可以正常工作,但這在大多數情況下都沒有關系。 在一種情況 ...

為什么std :: vector有兩個賦值運算符?

[英]Why does std::vector have two assignment operators?

自2011年以來,我們同時擁有復制和移動任務。 但是, 這個答案非常有說服力地說,對於資源管理類,只需要一個賦值運算符。 例如,對於std::vector ,這看起來像 這里重要的一點是,論證是以價值為基礎的。 這意味着在輸入函數體的時刻,大部分工作已經由other構造完成(如果可 ...

何時復制和交換習語不適用

[英]When is copy-and-swap idiom not applicable

看完此有關的復制和交換成語我讀過這個這下稱(2): (2)當不能使用復制和交換習語時,復制賦值運算符的典型聲明 我們何時應該避免使用復制和交換習慣用法? 什么時候“完全不能使用”? 是否有現實生活中的情況,即復制和交換以及零規則都不適用? 我確實找到了這個問 ...


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