String class
canonical
class string { public: string(char* s="") { init(s); } string(string& a) { init((char*)a); } ~string() { delete p; } string& operator=( string& a ) { init((char*)a); return *this; } string operator+( string& a ); int length() { return strlen(p); } operator char*() { return p; } private: void init(char* s) { p = new char[strlen(s)+1]; strcpy(p,s); } char* p; };