implementation of string class

来源:互联网 发布:java finally 抛异常 编辑:程序博客网 时间:2024/06/09 12:59

#include <iostream>#include <cstring>using namespace std;class myString{public:    //myString();    myString(const char *str = NULL);    myString(const myString &other);    myString& operator=(const myString &other);    ~myString();    void print() const    {        cout << data << endl;    }private:    char *data;};myString::myString(const char *str){    if(str == NULL)    {        data = new char[1];        data[0] = '\0';    }    else    {        int len = strlen(str);  //strlen("") == 0 & strlen(NULL) illegal        data = new char[len+1];        strcpy(data, str);    }}myString::myString(const myString &other){    int len = strlen(other.data); //sizeof()    data = new char[len+1];    strcpy(data, other.data);}myString& myString::operator=(const myString &other){    if(this == &other)        return *this;    delete []data;    int len = strlen(other.data);    data = new char[len+1];    strcpy(data, other.data);    return *this;}myString::~myString(){    delete []data;}int main(){    char *s = "123";    myString str(s);    cout << "str :";    str.print();    myString str1(str);    cout << "str1 :";    str1.print();    //define str2 like this cannot complete assignment operation    myString str2;          //strlen(NULL)    //myString str2("");    //strlen("")    str2 = str;    cout << "str2 :";    str2.print();    return 0;}



原创粉丝点击