55.(语法)
题目:类CMyString的声明如下:
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
CMyString& operator = (const CMyString& str);
private:
char* m_pData;
};
请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状态不能改
变。
题目:类CMyString的声明如下:
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
CMyString& operator = (const CMyString& str);
private:
char* m_pData;
};
请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状态不能改
变。
//coder:LEE 20120413
#include<iostream>
#include<CASSERT>
using namespace std;
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
CMyString& operator = (const CMyString& str);
private:
char* m_pData;
};
CMyString::CMyString(char* pData)
{
m_pData=pData;
}
CMyString::CMyString(const CMyString& str)
{
m_pData=str.m_pData;
}
CMyString::~CMyString()
{
delete m_pData;
m_pData=NULL;
}
CMyString& CMyString:: operator = (const CMyString& str)
{
if (this!=&str)
{
CMyString temp(str.m_pData);
char *t=this->m_pData;
this->m_pData=temp.m_pData;
temp.m_pData=t;
}
return *this;
}
int main()
{
CMyString a;
CMyString b;
a=b;
return 0;
}