例如,您可以通過以下方式定義類。
class CMyString
{
private:
char *pData;
public:
CMyString(const char *_p = NULL)
{
if (_p == NULL)
{
pData = NULL;
}
else
{
pData = new char[ std::strlen(_p) + 1 ];
std::strcpy(pData, _p);
}
}
CMyString(const CMyString &_str)
{
if (_str.pData == NULL)
{
pData = NULL;
}
else
{
pData = new char[ std::strlen(_str.pData) + 1 ];
std::strcpy(pData, _str.pData);
}
}
explicit operator bool() const { return (pData != NULL); }
CMyString & operator =(const CMyString &); // do not forget to define
~CMyString(); // do not forget to define
};
,也可以定義拷貝構造函數如下方式
CMyString(const CMyString &_str) : CMyString(_str.pData)
{
}
所有我曾經設計了string對象有多個構造函數,允許用戶輸入不同的數據類型爲字符串。 – trumpetlicks
由於你的類沒有析構函數,你的聲明顯然是錯誤的。 –