作者holymars ()
看板C_and_CPP
标题[问题] operator= overloading有没有比较快的写法@@?
时间Mon Jul 27 20:51:50 2009
当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
1F:推 dendrobium:哪个"预设copy函式" ? 07/27 21:49
2F:→ holymars:原本的default assignment operator@@ 07/27 21:52
3F:推 dendrobium:你想用基本资料型态的那些等於 那就一个一个复制吧 07/27 21:58
4F:→ holymars:我的问题是 有没有除了一行一行写之外的写法...XD 07/27 21:59
5F:→ holymars:因为class是nontrivial的 所以没办法用memcpy.. 07/27 21:59
7F:推 FRAXIS:用Copy-and-swap idiom试试看? 07/27 22:17
8F:→ holymars:orz 资料包成另一个class确实是可以..但是变成有一堆 07/27 22:30
9F:→ holymars:写好的function要作string replacement.. 07/27 22:31
10F:→ karcher:直接memcpy 07/27 23:09
11F:→ james732:memcpy适合用在c++的物件吗?? 07/28 01:23
12F:推 yoco315:ㄅ4合 07/28 02:08
13F:→ sunneo:y大您怎麽了 Q_Q 07/28 02:33