您的位置:首页 > 其它

String 构造,析构,复制,拷贝构造函数

2015-04-02 19:06 253 查看
class String{

public:

        String(const char *str = NULL); // 普通构造函数

        String(const String &other);        // 拷贝构造函数

        ~ String(void);                     // 析构函数

        String & operate =(const String &other);    // 赋值函数

private:

        char    *m_data;                // 用于保存字符串

};

// String的析构函数

String::~String(void)    {

    delete [] m_data;                      

    // 由于m_data是内部数据类型,也可以写成 delete m_data;

}

// String的普通构造函数             

String::String(const char *str)  {

    if(str==NULL)   {

       m_data = new char[1]; 

       *m_data = ‘0’;                      

    } else  {

       int length = strlen(str);           

       m_data = new char[length+1];      

       strcpy(m_data, str);                

    }



// 拷贝构造函数

String::String(const String &other)  {   

    int length = strlen(other.m_data); 

    m_data = new char[length+1];      

    strcpy(m_data, other.m_data);         

}

// 赋值函数

String & String::operate =(const String &other)  {   

       // (1) 检查自赋值                    

       if(this == &other)

           return *this;    

       // (2) 释放原有的内存资源        

       delete [] m_data;       

       // (3)分配新的内存资源,并复制内容

      int length = strlen(other.m_data); 

      m_data = new char[length+1]; 

      strcpy(m_data, other.m_data);       

       // (4)返回本对象的引用         

       return *this;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: