题目:如下为类型 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;
}

本文介绍了一种字符串类CMyString的赋值运算符实现方式,并提供了初级和高级程序员的不同解法。初级解法直接使用new分配内存并复制字符串,而高级解法则通过临时对象交换的方式避免了异常安全问题。
999

被折叠的 条评论
为什么被折叠?



