码迷,mamicode.com
首页 > 其他好文 > 详细

剑指offer_1

时间:2019-10-11 23:12:49      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:key   高级   释放   ++   amp   delete   自身   运算   number   

1.为CMyString添加赋值运算符函数

1
2
3
4
5
6
7
8
9
class {
public:
CMyString(char* pData=NULL);
CMyString(const CMyString& str);
~CMyString(void);
private:
char* m_pData;

}

1.1 解题思路<h3>

  • 是否把返回值的类型声明为该类型的引用,并在函数结束前返回实例的自身的引用(*this)
  • 是否把传入的参数的类型声明为常量引用
  • 是否释放实例自身已有的内存
  • 是否判断传入的参数和当前实例(*this)是不是同一个实例

1.2经典揭发(初级)

1
2
3
4
5
6
7
8
9
CMyString& CMyString::operator=(const CMyString &str){
if(this==&str)
return *this;
delete []m_pData;
m_pData=NULL;
m_pData=new char[strlen(str.m_pData)+1];
strcpy(m_pData,str.m_pData);
return *this;
}

1.3 考虑异常安全的方法(高级)

1
2
3
4
5
6
7
8
9
CMyString& CMyString::operator=(const CMyString &str) {

if (this!- &str) {
CMyString strTemp(str);
char* pTemp = strTemp.m_pData;
m_pData = pTemp;
}
return *this;
}

原文:大专栏  剑指offer_1


剑指offer_1

标签:key   高级   释放   ++   amp   delete   自身   运算   number   

原文地址:https://www.cnblogs.com/wangziqiang123/p/11657418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!