作者yoco315 (眠月)
看板C_and_CPP
標題Re: [問題] operator= overloading有沒有比較快的밠…
時間Mon Jul 27 23:39:19 2009
※ 引述《holymars ()》之銘言:
有解阿.. ^^
不要用 raw pointer,
用 deep-copy 語意的 smart pointer 就好了
class Q_Q { ... } ;
class A_A {
Loki::SmartPtr<Q_Q, Loki::DeepCopy> qq ;
} ;
降的話這個 qq 就有 value 語意,
就根本不需要手動寫 operator=() 惹,
你直接
A_A a ;
A_A b ;
b = a ;
qq 的內容就會進行深層拷貝。
但是 Loki::DeepCopy 有要求型別一定要有 Clone() 函數,
如果你不喜歡這個限制,但是又想要擋掉 self-assignment,
就自己寫一個簡單可以擋掉 self-assignment
的 deep copy smart pointer class template,
然後你的 raw pointer 都用自己寫低那ㄍ smart pointer 取代就好惹...
事ㄅ事好容易...
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.106.83
推 zlw:程式看起來很容易,不過看不懂,呵呵 07/27 23:46
推 holymars:所以是要我自己寫一個有deep copy的smart ptr =3= 07/27 23:59
推 QQ29:看不懂= = ..... 07/28 00:00
→ yoco315:嗯阿.. 寫一個.. 很簡單的.. 你已經寫過惹阿.. 07/28 00:07
→ yoco315:樓主第一篇那幾行就是啦ㄎㄎ.. 改成 template 就好惹.. 07/28 00:07
推 legendmtg:這兩個id在這討論...XDrz 07/28 00:08
推 conan77420:看到程式我的表情 => Q_Q b 07/28 00:12
推 sunneo:要命 _=o=_... 你的用語好新潮 我看不懂 T^T 07/28 00:56