Class string {public: string (): DATA (0) {Printf ("string () / n"); data = new char [1]; * data = '/ 0';} String (const char * STR): DATA (0) {Printf ("string (const char * s) / n"); if (str == null) return; data = new char [strlen (str) 1]; Memcpy (Data, Str, Strlen Str)); DATA [Strlen (STR)] = '/ 0';} String (const string & str): DATA (0) {Printf ("string (const string & s) / n"); data = new char [Strlen (STR.DATA) 1];
Memcpy (data, str.data); data [str. (str.data)] = '/ 0';} void operator = (const string & str) {printf ("Operator = ) / n "); if (data) delete [] data; data = new char [strull (Str.Data) 1]; Data [str.data)] = '/ 0';
Memcpy (Data, Str.Data, Strlen (Str.Data));} ~ string () {printf ("~ string () / n"); if (data) delete [] Data;} private: char * data; }; void main () {string a ("a"); string b = "b"; string c (a); string d = b;} Run results: string (const char * str) string (const char * str) String (const char * str) String ) String (const string & str) String (Const String & STR)