题目:如下为类型 CMyString 的声明,请为该类型添加赋值运算符函数
class CMyString
{
public:
CMyString( char * pData = NULL );
CMyString( const CMyString & str );
~CMyString( void );
private:
char * m_pData;
};
初级程序员解法( new char 可能内存不足抛出异常 ):
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;
}
高级程序员解法( 考虑异常安全性 ):
CMyString & CMyString::operator = ( const CMyString & str )
{
if( this != &str )
{
CMyString strTemp( str );
char * pTemp = strTemp.m_pData;
strTemp.m_pData = m_pData;
m_pData = pTemp;
}
return *this;
}