看板 C_and_CPP 關於我們 聯絡資訊
當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
dendrobium:哪個"預設copy函式" ? 07/27 21:49
holymars:原本的default assignment operator@@ 07/27 21:52
dendrobium:你想用基本資料型態的那些等於 那就一個一個複製吧 07/27 21:58
holymars:我的問題是 有沒有除了一行一行寫之外的寫法...XD 07/27 21:59
holymars:因為class是nontrivial的 所以沒辦法用memcpy.. 07/27 21:59
zlw:http://codepad.org/T7lEZMOM 資料另外弄成一個 class 這樣呢 07/27 22:15
FRAXIS:用Copy-and-swap idiom試試看? 07/27 22:17
holymars:orz 資料包成另一個class確實是可以..但是變成有一堆 07/27 22:30
holymars:寫好的function要作string replacement.. 07/27 22:31
karcher:直接memcpy 07/27 23:09
james732:memcpy適合用在c++的物件嗎?? 07/28 01:23
yoco315:ㄅ4合 07/28 02:08
sunneo:y大您怎麼了 Q_Q 07/28 02:33