在之前的理论上调用对象的operator=是这样做的

    void swap(A& x)
{
std::swap(a, x.a);
}
A& operator=(const A& a)
{
A temp = a;
swap(temp);
return *this;
}

上面的代码看起来有点麻烦,但它是一个好办法。

我们可以在std里面特化我们的swap

class A
{
private:
int a;
public:
void swap(A& x)//防止写成friend,我们给他一个接口
{
std::swap(a, x.a);
}
A(int x) :a(x){}
A& operator=(const A& a)
{
A temp = a;
using std::swap;
swap(*this,temp);
return *this;
}
void display()
{
cout << a << endl;
}
}; namespace std
{
// template<>书上加了,但我发现并不能
void swap<A>(A &s1, A &s2)//这个<A>是特化,和重载分道扬镳
{
s1.swap(s2);
}
} int main()
{
A a();
A b();
b.display();
b = a;
b.display();
}

当class也是template以后再说

最新文章

  1. 眼保Guide
  2. IMetadataAware接口的特性定制Model元数据
  3. Ubuntu下Eclipse中文乱码问题解决(转)
  4. iface eth0 inet dhcp
  5. 多文件上传 iOS功能
  6. window和Linux下的软链接
  7. 使用 HTML5 input 类型提升移动端输入体验(键盘)
  8. sql2000/sql2005/sql2008数据库变为0字节修复/MDF文件0字节恢复
  9. day3--远程链接Linux
  10. Bootstrap3 表单-基本表单
  11. python类型转换convert实例分析
  12. [逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
  13. Ganglia 调试技巧
  14. ReCAPTCHA &amp; 手势验证
  15. PHP——emjoin表情存入数据库
  16. 开源PaaS工具CloudFoundry落地阿里云
  17. libcurl进行HTTP GET获取JSON数据(转载)
  18. Particle 粒子效果使用(适配微信小游戏,particle is not defined)
  19. MVC初级教程(二)
  20. 让IE6/IE7/IE8支持HTML5标签的js代码

热门文章

  1. Centos 6.5 搭建php环境(nginx+mariadb+php7)
  2. redis常见命令
  3. dede去除powered by dedecms
  4. PHP判断远程图片或文件是否存在
  5. C程序设计语言练习题1-21
  6. 成功启动了Apache却没有启动apache服务器
  7. left join 关联条件位置
  8. 【HDOJ】1332 LC-Display
  9. 设计模式(十五):Iterator迭代器模式 -- 行为型模式
  10. HDOJ 1395 2^x mod n = 1