CMyString
题目:类CMyString的声明如下:
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
CMyString&operator= (const CMyString& str);
private:
char* m_pData;
};
请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状态不能改变。
要求异常安全,应该禁止使用new和delete操作
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include <iostream> 2 #include <string.h> 3 class CMyString 4 { 5 public: 6 CMyString(char* pData = NULL); 7 CMyString(const CMyString& str); 8 ~CMyString(void); 9 CMyString& operator = (const CMyString& str); 10 private: 11 char* m_pData; 12 }; 13 /* 14 CMyString& CMyString::operator=(const CMyString& str) 15 { 16 if (this==&str) 17 { 18 return *this; 19 } 20 delete [] m_pData; 21 m_pData=NULL; 22 m_pData=new char[strlen(str.m_pData)+1]; 23 strcpy(m_pData,str.m_pData); 24 return *this; 25 } 26 */ 27 28 CMyString& CMyString::operator =(const CMyString &str) 29 { 30 if(this != &str) 31 { 32 CMyString strTemp(str); 33 char* pTemp = strTemp.m_pData; 34 strTemp.m_pData = m_pData; 35 m_pData = pTemp; 36 } 37 return *this; 38 }