剑指offer_1
Posted wangziqiang123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer_1相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
剑指offer反转链表python
剑指offer包含min函数的栈python
剑指offer 面试32题
剑指offer 面试18题
剑指offer_替换空格
剑指offer_替换空格