所有代码均通过G++编译器测试,仅为练手纪录。
//面试题1:赋值运算符函数
//题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
class CMyString
{
public:
CMyString(char* pData =NULL);
CMyString(constCMyString& str);
~CMyString(void);
public:
CMyString& operator=(constCMyString& rhs);
private:
char *m_pData;
};
//面试题1:赋值运算符函数
//题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
class CMyString
{
public:
CMyString(char* pData = NULL);
CMyString(const CMyString& str);
~CMyString(void);
public:
CMyString& operator=(const CMyString& rhs);
private:
char *m_pData;
};
CMyString::CMyString(char* pData)
{
if (NULL != pData)
{
unsigned long nSize = strlen(pData);
m_pData = new char[nSize+1];
strcpy(m_pData,pData);
}
else
{
m_pData = new char[1];
memset(m_pData,0,sizeof(char));
}
}
CMyString::CMyString(const CMyString& str)
{
unsigned long nSize = strlen(str.m_pData);
m_pData = new char[nSize+1];
strcpy(m_pData,str.m_pData);
}
CMyString::~CMyString(void)
{
if(NULL == m_pData)
{
delete[] m_pData;
m_pData = NULL;
}
}
CMyString& CMyString::operator=(const CMyString& rhs)
{
if(this != &rhs)
{
CMyString strTemp(rhs);
char *pTemp = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = pTemp;
}
return *this;
}
ZhaiPillary
2016-12-22