[effectiv c++]条款25:考虑写出一个不抛出异常的swap函数(pimpl手法)
2017-09-19 19:16
477 查看
缺省状态
只要类型T支持copy构造函数和copy assignment。
pimpl手法
只需要交换pImpl指针
只要类型T支持copy构造函数和copy assignment。
namespace std { template<typename T> // template<> 表示它是 std::swap 的一个全特化版本 void swap(T& a, T& b)// 函数名称后的 <Widget> 表示这一特化版本系针对 T是Widget 而设计 { T temp(a); a = b; b = temp; } }
pimpl手法
只需要交换pImpl指针
class WidgetImpl { public: ………… private: int a, b, c; std::vector<double> v; ………… }; class Widget { public: ………… void swap(Widget& other) { using std::swap; // 不用std::swap(pImpl, other.pImpl) swap(pImpl, other.pImpl); } private: WidgetImpl *pImpl; }; namespace std { template<> void swap<Widget>(Widget &a, Widget &b) { a.swap(b); } }
相关文章推荐
- 《Effect C++》学习------条款25:考虑写出一个不抛出异常的swap函数
- effective C++ 条款 25:考虑写出一个不抛出异常的swap函数
- Effective C++ 条款25 考虑写出一个不抛出异常的swap函数
- Effective C++——》条款25:考虑写一个不抛出异常的swap函数
- C++之考虑写出一个不抛出异常的swap函数(25)---《Effective C++》
- 读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
- 读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
- Effective C++:条款25:考虑写出一个不抛异常的swap函数
- 条款25:考虑写出一个不抛出异常的swap函数
- 条款25:考虑写出一个不抛出异常的swap函数
- <Effective C++>:Item25:考虑写出一个不抛出异常的swap函数
- 《Effective C ++ 》资源管理:条款25--考虑写出一个不抛出异常的swap函数
- Effective c++(第三版) 条款25:考虑写出一个不抛出异常的swap函数
- 《Effective C++》学习笔记条款25 考虑写出一个不抛异常的swap函数
- 读书笔记《Effective C++》条款25:考虑写出一个不抛异常的swap函数
- 条款25:考虑写一个不抛出异常的swap函数
- Effective C++ Item 25 考虑写出一个不抛异常的swap函数
- Effective C++:条款25:考虑写出一个不抛异常的swap函数
- 条款25 考虑写出一个不抛异常的swap函数
- 条款25 考虑写出一个不抛异常的swap函数