博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++异常安全的赋值运算符重载 【微软面试100题 第五十五题】
阅读量:6704 次
发布时间:2019-06-25

本文共 589 字,大约阅读时间需要 1 分钟。

题目要求:

  类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;    }}

 

转载于:https://www.cnblogs.com/tractorman/p/4090263.html

你可能感兴趣的文章
javascript学习总结2
查看>>
利用Git工具将本地创建的项目上传到Github上
查看>>
linux之netstat&top命令学习
查看>>
深入浅出-iOS函数式编程的实现 && 响应式编程概念
查看>>
c语言疑惑点
查看>>
在MAC下怎样用SSH连接远程LINUXserver
查看>>
【深入剖析Tomcat笔记】第四篇 默认连接器
查看>>
ElasticSearch(1)-入门
查看>>
Stream.findFirst的一个疑问
查看>>
深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及訪问方式
查看>>
2017年淘客全新玩法——代理模式
查看>>
【ORACLE技术嘉年华PPT】MySQL压力测试经验
查看>>
AT发送短信(转)
查看>>
VB操作ISNULL
查看>>
PIC452外部中断进不去的原因?
查看>>
2.9 Fibonacci数列
查看>>
POJ 1721 CARDS(置换)
查看>>
Hypertable 0.9.6.4 发布,分布式数据库
查看>>
iphone sdk
查看>>
如何获取jqGrid中选择的行的数据
查看>>