c++类的操作符重载

来源:互联网 发布:淘宝用品 编辑:程序博客网 时间:2024/05/16 14:40

以下是自己学习c++类的操作符重载自己写的string类

#include <iostream>#include <string.h>using namespace std;//字符串类编写class mystring{public:    mystring(int size,const char* mstring)    {        m_len=size;        m_space=new char[m_len];        strcpy(m_space,mstring);    }    mystring(const mystring &obj)    {        this->m_len=obj.m_len;        this->m_space=new char[this->m_len];        strcpy(this->m_space,obj.m_space);    }    ~mystring()    {        delete [] m_space;    }    void display_string()    {        cout<<m_space<<endl;    }    //重载操作符public:    char& operator[](int i)    {        if(i<0 || i>=m_len)            cout<<"out of bounds"<<endl;        return m_space[i];    }    mystring& operator=(char const *buf)    {        if(m_space != NULL)        {            delete [] m_space;            m_space=NULL;        }        this->m_len=strlen(buf);        m_space=new char[m_len];        strcpy(m_space,buf);    }    mystring& operator=(mystring const obj)    {                if(m_space != NULL)                {                        delete [] m_space;                        m_space=NULL;                }        this->m_len=obj.m_len;        m_space=new char[m_len];                strcpy(m_space,obj.m_space);    }        mystring& operator+(char const *buf)    {        this->m_len=this->m_len+strlen(buf);        char *tmp=new char[4096];        strcpy(tmp,m_space);        strcat(tmp,buf);        delete [] this->m_space;        m_space=new char[m_len];                strcpy(m_space,tmp);        delete [] tmp;    }        mystring& operator+(mystring const obj)        {        this->m_len=this->m_len+obj.m_len;        char *tmp=new char [4096];        strcpy(tmp,this->m_space);        strcat(tmp,obj.m_space);        delete [] this->m_space;                m_space=new char[m_len];                strcpy(m_space,tmp);                delete [] tmp;    }    friend ostream& operator<<(ostream& out,mystring& obj);private:    int m_len;    char *m_space;};    ostream& operator<<(ostream& out,mystring& obj)    {        out<<obj.m_space;        return out;    }int main(){    mystring var01(10,"13213");    var01.display_string();    mystring var02=var01;    var02.display_string();    cout<<var02[2]<<endl;    var02[2]='5';    var02.display_string();    var02="zww is yunwei";    var02.display_string();    mystring var03=var01;    var03=var02;        var03.display_string();    var03+"lllllllllllll";    var03.display_string();    var03+var03;    var03.display_string();    cout<<"HI:"<<var03<<endl;    return 0;}
1 0
原创粉丝点击