条款25:考虑写出一个不抛异常的swap函数
来源:互联网 发布:mysql 5.7 安装 编辑:程序博客网 时间:2024/04/29 18:00
结论1:首先,如果swap的缺省实现码对你的class或class template提供可接受的效率,不需要额外做任何事。
结论2:当std::swap对你的类型效率不高时(几乎总意味着你的class或tempalte使用了某种pimpl(pointer to implementation的缩写)手法),则
(1)提供一个public swap成员函数,让它高效地置换你的类型的两个对象值,并确保这个函数不抛出异常,因为高效的swaps几乎总是基于对内置类型的操作,而内置类型上的操作绝不会抛出异常。
(2)在你class或template所在的命名空间内提供一个non-member swap,并令它调用public swap成员函数。
(3)如果你正在编写一个class(而非class template),为你的class特化std::swap,并令它调用public swap成员函数。
(4)调用swap时应针对std::swap使用using 声明式,以便让std::swap在你的函数内曝光可见,然后不加任何namespace修饰符,赤裸裸地调用swap。
结论3:通常不能够改变std命名空间内的任何东西,但可以为标准template制造特化版本,使它专属于“用户自定义类型”。
C++允许对class template、function template全特化(模板特化即有时为了需要,针对特定的类型,需要对模板进行特化,也就是特殊处理),即对所有模板参数均特化,但只允许对class template偏特化,不允许对function template偏特化,即只特化部分模板参数。
- 条款25:考虑写出一个不抛异常的swap函数
- 条款25:考虑写出一个不抛异常的swap函数
- 条款25:考虑写出一个不抛异常的swap函数
- 《Effective C++》学习笔记条款25 考虑写出一个不抛异常的swap函数
- 条款25:考虑写出一个不抛异常的swap函数
- 条款25:考虑写出一个不抛异常的swap函数
- Effective C++:条款25:考虑写出一个不抛异常的swap函数
- 条款25 考虑写出一个不抛异常的swap函数
- 条款25 考虑写出一个不抛异常的swap函数
- 读书笔记《Effective C++》条款25:考虑写出一个不抛异常的swap函数
- Effective C++ 条款25:考虑写出一个不抛异常的swap函数
- 《Effective C++》条款25:考虑写出一个不抛异常的swap函数
- 第四部分(4)(条款25:考虑写出一个不抛出异常的swap函数)
- 条款25:考虑写出一个不抛出异常的swap函数
- Effective c++(第三版) 条款25:考虑写出一个不抛出异常的swap函数
- 《Effective C ++ 》资源管理:条款25--考虑写出一个不抛出异常的swap函数
- 《Effect C++》学习------条款25:考虑写出一个不抛出异常的swap函数
- [effectiv c++]条款25:考虑写出一个不抛出异常的swap函数
- 对两个有序的链表进行合并成一个一个有序链表(递归方法)
- oracle 在ubuntu debian centos rhel suse等上的安装(转载drmeng)
- ServletConfig的使用
- jquery中的动画
- 一、排序_1061_2
- 条款25:考虑写出一个不抛异常的swap函数
- const readonly关键字声明
- (难度:30%)flappy bird
- 最小堆k路归并
- suse11+oracle10g安装(转载drmeng)
- jquery的widget源码剖析
- 改造GDataXMLNode 使其完美支持非arc
- 如何用C#实现Word里的字体选择下拉列表框!
- Fastjson详细介绍 !!!!