C++割付演算子関数
4031 ワード
クラスに代入演算子関数を追加するには、次の手順に従います.
タイプ定義
要点:
1.戻り値タイプはこのタイプの参照であり、関数が終わる前にインスタンス自身の参照を返します.
2、入力したパラメータを定数参照として宣言するかどうか【const CmyString&str】;
3、自分の既存のメモリを解放するかどうか、さもなくば“メモリが漏れます”をもたらします;
4.パラメータが現在の例と同じ対象であるか否かを判断する.
解法:
タイプ定義
class CMyString
{
public:
CMyString(char *pData = NULL);
CMyString(const CMyString &str);
~CMyString(void);
CMyString &operator=(const CMyString &);
private:
char *m_pData;
};
要点:
1.戻り値タイプはこのタイプの参照であり、関数が終わる前にインスタンス自身の参照を返します.
2、入力したパラメータを定数参照として宣言するかどうか【const CmyString&str】;
3、自分の既存のメモリを解放するかどうか、さもなくば“メモリが漏れます”をもたらします;
4.パラメータが現在の例と同じ対象であるか否かを判断する.
解法:
/*
C++
*/
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);
// : *this
return *this;
}
/*
C++
*/
CMyString &CMyString::operator=(const CMyString &str)
{
if (this != &str) //
{
CMyString strTemp(str);
char *pTemp = strTemp.m_pData; //
//strTemp.m_pData ,
strTemp.m_pData = m_pData;
m_pData = pTemp; //
} // strTemp , strTemp pTemp
return *this;
}