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;}