博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试题1:赋值运算函数(offer)
阅读量:4216 次
发布时间:2019-05-26

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

题目:

如下为类型CMyString的声明,请为该类型添加赋值运算符函数。

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

在编写赋值运算符函数时,要注意以下几个问题:

1.返回类型要为自身对象(*this)的引用,这样便可以进行连续赋值(条款10)。

2.参数应该为const reference,这样可以避免由于值传递带来的构造和析构代价(条款20)。

3.需要进行“证同测试”,避免自我赋值(条款11)。

4.要将原来的内存释放掉,避免内存泄漏。

5.要注意异常。

下面是解答:

CMyString& CMyString::operator=(const CMyString& str){	if (this != &str)	{		CMyString strTemp(str);		char *pTemp = strTemp.m_pData;		strTemp.m_pData = m_pData;		m_pData = pTemp;	}  //此处会自动调用strTemp的析构函数	return *this;}
上面这段代码实现了异常安全性,但是花费了构造和析构的代价。

转载地址:http://expmi.baihongyu.com/

你可能感兴趣的文章
Web前端学习笔记——JavaScript 之继承、函数进阶
查看>>
Web前端学习笔记——JavaScript之面向对象游戏案例:贪吃蛇
查看>>
不做单元测试?小心得不偿失!嵌入式系统单元测试工具,自动生成测试用例
查看>>
一种实用的联网汽车无线攻击方法及车载安全协议
查看>>
光靠欺骗检测是不够的:对抗多目标跟踪的攻击
查看>>
基于微区块链的V2X地理动态入侵检测
查看>>
面向V2C场景的ADAS数字孪生模型构建方法
查看>>
Comma2k19数据集使用
查看>>
面向自动驾驶车辆验证的抽象仿真场景生成
查看>>
一种应用于GPS反欺骗的基于MLE的RAIM改进方法
查看>>
筑牢网络安全基座,安全护航经济数字化转型大会成功举办
查看>>
单元测试工具:单元测试的测试前置驱动条件
查看>>
汽车智不智能?“智能座舱”有话说
查看>>
自动驾驶汽车CAN总线数字孪生建模(一)
查看>>
自动驾驶汽车CAN总线数字孪生建模(二)
查看>>
自动驾驶汽车GPS系统数字孪生建模(一)
查看>>
自动驾驶汽车GPS系统数字孪生建模(二)
查看>>
上海控安入选首批工控安全防护能力贯标咨询机构名单
查看>>
自动驾驶汽车传感器数字孪生建模(一)
查看>>
CUDA 学习(四)、线程
查看>>