String類成員函數的實現


已知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 ;
}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM