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操作

 

View Code
 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 }

 

 

 

posted @ 2012-05-10 23:45  徐露  阅读(227)  评论(0编辑  收藏  举报