设为首页 加入收藏

TOP

4.5.4 特化ADL可找到的swap
2013-10-07 15:00:51 来源: 作者: 【 】 浏览:68
Tags:4.5.4 特化 ADL 找到 swap

4.5.4  特化ADL可找到的swap

依然使用刚才的point类,但这次我们不变动std名字空间,而是在全局名字空间内实现swap函数:

  1. //gloabl namespace  
  2. void swap(point &x, point &y)  
  3.     {x.swap(y);}  
  4. int main()  
  5. {  
  6.     point a(1,2,3), b(4,5,6);  
  7.     cout << "std::swap" << endl;  
  8.     std::swap(a,b);  
  9.     cout << "boost::swap" << endl;  
  10.     boost::swap(a, b);  
  11. }  

程序运行结果如下:
  1. std::swap  
  2. boost::swap  
  3. inner swap  

这段代码的运行结果与之前的特化std::swap有明显不同,std::swap使用了标准的交换操作,而boost::swap通过ADL规则找到了全局名字空间的特化交换函数,实现了高效的交换。

如果读者担心在全局名字空间编写自由函数swap会造成名字"污染",也可以把特化的swap加入到boost名字空间,或者其他ADL可以找到的名字空间。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.9.7 获得更多的调试信息 下一篇4.4.2 使用操作符()向容器增加元素

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: