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

slide: A string class