1. 程式人生 > >編寫類String的建構函式、解構函式和賦值函式

編寫類String的建構函式、解構函式和賦值函式

//普通建構函式 
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;             //得分點:返回本物件的引用  


}