[問題] operator= overloading有沒有比較快的寫法@@?

看板C_and_CPP (C/C++)作者時間16年前 (2009/07/27 20:51), 編輯推噓5(508)
留言13則, 8人參與, 最新討論串1/1
當Class裡面有pointer member的時侯 常常需要overload copy constructor和assisgnment operator 讓物件在複製的時侯連pointer指向的data都複製一份出來 但是在overload上述兩個函式的時侯 其他非pointer的data member也要一行一行作assisgnment.. 感覺十分麻煩 有沒有辦法用其他的方法減少coding的量呢? 比方說呼叫被overload前的那個預設函式之類.. PS. 剛剛試過 A& operator=(const A& rhs) { if(this == &rhs) return *this; *this = rhs; ...balabala... return *this } 結果當然是recursive call到stack overflow了... /_\ 原本那個被overload掉的預設copy函式有什麼辦法呼叫到嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.15.163

07/27 21:49, , 1F
哪個"預設copy函式" ?
07/27 21:49, 1F

07/27 21:52, , 2F
原本的default assignment operator@@
07/27 21:52, 2F

07/27 21:58, , 3F
你想用基本資料型態的那些等於 那就一個一個複製吧
07/27 21:58, 3F

07/27 21:59, , 4F
我的問題是 有沒有除了一行一行寫之外的寫法...XD
07/27 21:59, 4F

07/27 21:59, , 5F
因為class是nontrivial的 所以沒辦法用memcpy..
07/27 21:59, 5F

07/27 22:15, , 6F
http://codepad.org/T7lEZMOM 資料另外弄成一個 class 這樣呢
07/27 22:15, 6F

07/27 22:17, , 7F
用Copy-and-swap idiom試試看?
07/27 22:17, 7F

07/27 22:30, , 8F
orz 資料包成另一個class確實是可以..但是變成有一堆
07/27 22:30, 8F

07/27 22:31, , 9F
寫好的function要作string replacement..
07/27 22:31, 9F

07/27 23:09, , 10F
直接memcpy
07/27 23:09, 10F

07/28 01:23, , 11F
memcpy適合用在c++的物件嗎??
07/28 01:23, 11F

07/28 02:08, , 12F
ㄅ4合
07/28 02:08, 12F

07/28 02:33, , 13F
y大您怎麼了 Q_Q
07/28 02:33, 13F
文章代碼(AID): #1ARQBfJs (C_and_CPP)
文章代碼(AID): #1ARQBfJs (C_and_CPP)