Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1876397
  • 博文数量: 184
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2388
  • 用 户 组: 普通用户
  • 注册时间: 2016-12-21 22:26
个人简介

90后空巢老码农

文章分类

全部博文(184)

文章存档

2021年(26)

2020年(56)

2019年(54)

2018年(47)

2017年(1)

我的朋友

分类: C/C++

2021-05-09 22:46:53

本文是看了《Effective c++》 的条款25的总结部分,想看原版的老爷们,去找本ebook看就好了


首先,如果swap的缺省实现的代码(tmp=a;a=b;b=tmp;)对自定义的class或者class template提供可接受的效率,不需要额外做任何事。

如果swap缺省实现版的效率不足,可以参考一下步骤:

1. 提供一个public 的swap成员函数,让它高效的实现置换自定义类型的两个对象的值
2. 在class或者template所在的命名空间内提供一个non-member swap,并令其调用步骤1当中的swap成员函数
3. 如果是class而非template,可以实现一个std::swap的一个特化版本


最后,如果调用swap,需要在之前添加一个using std::swap; 语句,方便让std::swap在自定义的namespace当中获得曝光,然后不加任何修饰符,调用swap,这样执行的时候,就会先在当前命名空间去寻找swap实现,然后找std::swap的特化版本,最后使用swap,保证不漏,且效率递减
阅读(1821) | 评论(0) | 转发(0) |
0

上一篇:os回收内存的几个点

下一篇:c++对象模型

给主人留下些什么吧!~~