EffectiveC++ Item11
来源:互联网 发布:2017年大数据龙头股票 编辑:程序博客网 时间:2024/05/07 19:06
这个item主要分析了防止对象自我赋值,利用copy-and-swap策略来解决。
写了小代码,其实在实际中大部分会简单写:
#include <iostream>
#include<string>
using namespace std;
class Widget
{
public:
Widget(int aData):m_Data(aData)
{
}
virtual void Swap(Widget &aRhs)
{
int lTemp = aRhs.m_Data;
aRhs.SetData(m_Data);
m_Data = lTemp;
}
Widget& operator=(const Widget &aRhs)
{
Widget lTemp(aRhs);
Swap(lTemp);
return *this;
}
int GetData() const
{
return m_Data;
}
void SetData(int aData)
{
m_Data = aData;
}
private:
int m_Data;
};
class Drived: public Widget
{
void Swap(Drived &aRhs)
{
Drived lTemp(aRhs);
aRhs = *this;
*this = lTemp;
}
private:
int m_DriveData;
};
int main()
{
Widget lTest1(10);
Widget lTest2(-10);
lTest2 = lTest1;
cout << lTest2.GetData() << endl;
}
- EffectiveC++ Item11
- EffectiveC++
- effectiveC++
- EffectiveC++
- EffectiveC++10
- EffectiveC++ Item12
- EffectiveC++ Item21
- 《EffectiveC++》笔记
- EffectiveC++总结
- Effective C++ Item11 Note
- JavaScript学习--Item11 arguments对象
- EffectiveC++ Item28 test case
- effectiveC++中的条款20
- effectiveC++读书笔记(九)
- Effectivec++读书笔记1
- EffectiveC++ 学习笔记1
- EffectiveC++实现(1)
- EffectiveC++学习(一)
- POJ 4052
- 你的脸在我的记忆里变得模糊不清:伤感日志
- C#调用WebService
- linux_argv_argc_参数解析
- 梁逸轩唯美伤感空间日志发布:其实,我不想说再见~~
- EffectiveC++ Item11
- POJ 2001 字典树
- DEPRECATED: Use of this script to execute hdfs command is deprecated.
- Tilera发布首款100核心CPU TLE-Gx100
- 达令拥抱的伤感时尚日志分享:我不想去伪装一切
- 有趣的keil MDK细节
- 8086寄存器分类
- 单元测试101:你测试你的javascript吗?
- C语言:分清函数指针和指针函数