读书笔记_Effective_C++_条款二十五: 考虑写出一个不抛出异常的swap函数
2024-08-21 15:01:29
在之前的理论上调用对象的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以后再说
最新文章
- 眼保Guide
- IMetadataAware接口的特性定制Model元数据
- Ubuntu下Eclipse中文乱码问题解决(转)
- iface eth0 inet dhcp
- 多文件上传 iOS功能
- window和Linux下的软链接
- 使用 HTML5 input 类型提升移动端输入体验(键盘)
- sql2000/sql2005/sql2008数据库变为0字节修复/MDF文件0字节恢复
- day3--远程链接Linux
- Bootstrap3 表单-基本表单
- python类型转换convert实例分析
- [逆向工程] 二进制拆弹Binary Bombs 快乐拆弹 详解
- Ganglia 调试技巧
- ReCAPTCHA &; 手势验证
- PHP——emjoin表情存入数据库
- 开源PaaS工具CloudFoundry落地阿里云
- libcurl进行HTTP GET获取JSON数据(转载)
- Particle 粒子效果使用(适配微信小游戏,particle is not defined)
- MVC初级教程(二)
- 让IE6/IE7/IE8支持HTML5标签的js代码