C++异常安全的赋值运算符重载 【微软面试100题 第五十五题】
2024-09-30 00:13:03
题目要求:
类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;
}
}
最新文章
- 基本排序算法——shell排序java实现
- 记录android显示流程
- Linux内核内存管理
- [ Windows] [ OS ] [ Remote Desktop ] 開啟同一個帳號同時2的連線RDP的方式
- code forces Watermelon
- C#App.config的使用
- mysql ERROR 1064 (42000): Erreur de syntaxe près de 'order)
- c# 借助cmd命令解析apk文件信息
- 详细解析BluetoothAdapter的详细api
- 我的MYSQL学习心得(四)
- VR行业未来是会走向巅峰还是会归于落寞?
- matlab计算矩阵每列非0元素个数
- 使用电脑ODBC测试数据库连接方法
- WebAPI——自动生成帮助文档
- Zabbix4.2.0基本配置和邮件报警
- redis实现与分析-单机数据库实现
- iredmail安装问题
- 移动端自适应布局 rem方案
- 【oneday_onepage】——The Secret Of Steve<;2>;
- vi/vim 常用命令 之 一图定天下!