读Effective C++ 条款11在处理operator= “自我赋值的时候” 不仅要考虑是否自我赋值,还讨论了新赋值的内存分配时候的异常安全性。
用到了一种叫做copy and swap的技巧,不过我觉得应该叫做temp and swap,因为主要是将内存分配的问题交给了本类的temp,通过swap的方式偷梁换柱了temp的数据成员,即使函数完成,temp被销毁,销毁的数据也是swap之后不要的那份。
我觉得这个技巧真的很巧妙。
最好的例子:
一个Mystring类:
|
|
读Effective C++ 条款11在处理operator= “自我赋值的时候” 不仅要考虑是否自我赋值,还讨论了新赋值的内存分配时候的异常安全性。
用到了一种叫做copy and swap的技巧,不过我觉得应该叫做temp and swap,因为主要是将内存分配的问题交给了本类的temp,通过swap的方式偷梁换柱了temp的数据成员,即使函数完成,temp被销毁,销毁的数据也是swap之后不要的那份。
我觉得这个技巧真的很巧妙。
最好的例子:
一个Mystring类:
|
|
本文标题:Copy and Swap技巧小记
文章作者:Yang Shuai
发布时间:2018年06月24日 - 20:06
最后更新:2018年06月24日 - 20:06
原始链接:https://ysbbswork.github.io/2018/06/24/Copy-and-Swap技巧小记/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。
微信打赏
支付宝打赏