string实现

class _string
{
public:
    _string(const char* str=NULL);
    _string(const _string& another);
    ~_string();
    _string& operator=(const _string & rhs);

private:
    char* m_data;
};

// _string a ="abc"
_string::_string(const char* str/* =NULL */)
{
    if(str == NULL)
    {
        m_data = new char[1];
        m_data[0] = '\0';
    }
    else
    {
        m_data = new char[strlen(str) + 1];
        strcpy(m_data,str);
    }
}

// _string a _string b a = b
_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 a _string b = a
_string::_string(const _string& another)
{
    m_data = new char[strlen(another.m_data)+1];
    strcpy(m_data,another.m_data);
}

_string::~_string()
{
    delete[] m_data;
    m_data = NULL;
}
View Code

 

posted on 2014-10-21 15:28  kangbry  阅读(101)  评论(0编辑  收藏  举报

导航