***************************************************
更多精彩,歡迎進入:http://shop115376623.taobao.com
***************************************************
已知String類定義如下:
class String
{
public:
String(const char *str = NULL); //?通用構造函數
String(const String &another); //?拷貝構造函數
~ String(); //?析構函數
String & operater =(const String &rhs); //?賦值函數
private:
char *m_data; //?用于保存字符串
};
嘗試寫出類的成員函數實現。
答案:
?
String::String(const char *str)
{
???if ( str == NULL ) //strlen在參數為NULL時會拋異常才會有這步判斷
???? {
???????m_data = new char[1] ;
???????m_data[0] = '\0' ;
?????}
?? else
????{
?????? m_data = new char[strlen(str) + 1];
?????? strcpy(m_data,str);
????}
?
}?
String::String(const String &another)
{
??? m_data = new char[strlen(another.m_data) + 1];
??? strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
????if ( this == &rhs)
????????return *this ;
??? delete []m_data; //刪除原來的數據,新開一塊內存
??? m_data = new char[strlen(rhs.m_data) + 1];
??? strcpy(m_data,rhs.m_data);
????return *this ;
}
String::~String()
{
??? delete []m_data ;
}