题目要求:

  类CMyString的声明如下:

class CMyString
{
public:
CMyString(char *pData=NULL);
CMyString(const CMyString &str);
~CMyString(void);
CMyString &operator=(const CMyString &str);
private:
char *m_pData;
};

  请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状态不能改变。

  参考资料剑指offer第1题。

题目分析:

  要异常时,对象状态不改变,则,我们先创建一个临时实例,再交换临时实例和原来的实例。

CMyString &CMyString::operator=(const CMyString &str)
{
if(this!=&str)
{
CMyString strTemp(str);
char *p = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = p;
}
}

最新文章

  1. 基本排序算法——shell排序java实现
  2. 记录android显示流程
  3. Linux内核内存管理
  4. [ Windows] [ OS ] [ Remote Desktop ] 開啟同一個帳號同時2的連線RDP的方式
  5. code forces Watermelon
  6. C#App.config的使用
  7. mysql ERROR 1064 (42000): Erreur de syntaxe près de 'order)
  8. c# 借助cmd命令解析apk文件信息
  9. 详细解析BluetoothAdapter的详细api
  10. 我的MYSQL学习心得(四)
  11. VR行业未来是会走向巅峰还是会归于落寞?
  12. matlab计算矩阵每列非0元素个数
  13. 使用电脑ODBC测试数据库连接方法
  14. WebAPI——自动生成帮助文档
  15. Zabbix4.2.0基本配置和邮件报警
  16. redis实现与分析-单机数据库实现
  17. iredmail安装问题
  18. 移动端自适应布局 rem方案
  19. 【oneday_onepage】——The Secret Of Steve<2>
  20. vi/vim 常用命令 之 一图定天下!

热门文章

  1. 缓存List并写入文件持久化
  2. Get和Post的初步探究
  3. cas实现单点登录原理
  4. htmlparse
  5. SQL查找TCar表中同一辆车前后两条记录的CarId,两条记录中有多个字段值一样
  6. Hadoop 2.7.0模拟分布式实验环境搭建[亲测]
  7. JavaScript_2_实现
  8. 51nod 1276 岛屿的数量
  9. 【Python图像特征的音乐序列生成】关于小样本的一些思考
  10. 使用Java connector消费ABAP系统的函数