編寫類String的構造函數、析構函數和賦值函數(轉載)

請編寫String的上述4個函數。 

C++代碼 
 

複製代碼

//普通構造函數 
String::String(const char *str) 
{ 
        if(str==NULL) 
        { 
                m_data = new char[1]; // 得分點:對空字符串自動申請存放結束標誌'\0'的//加分點:對m_data加NULL 判斷 
                *m_data = '\0'; 
        }    
        else 
        { 
         int length = strlen(str); 
         m_data = new char[length+1]; // 若能加 NULL 判斷則更好 
         strcpy(m_data, str); 
        } 
} 
// String的析構函數 
String::~String(void) 
{ 
        delete [] m_data; // 或delete m_data; 
} 
//拷貝構造函數 
String::String(const String &other)    // 得分點:輸入參數爲const型 
{     
        int length = strlen(other.m_data); 
        m_data = new char[length+1];     //加分點:對m_data加NULL 判斷 
        strcpy(m_data, other.m_data);    
} 
//賦值函數 
String & String::operate =(const String &other) // 得分點:輸入參數爲const 型 
{     
        if(this == &other)                    //得分點:檢查自賦值 
                return *this;   
        delete [] m_data;                //得分點:釋放原有的內存資源 
        int length = strlen( other.m_data );      
        m_data = new char[length+1];  //加分點:對m_data加NULL 判斷 
        strcpy( m_data, other.m_data );   
        return *this;             //得分點:返回本對象的引用  

} 

複製代碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章