#include <iostream>

class String
{
  public:
    String();                  // default constructor
    String(const char *str);   // conversion constructor 
    String(const String &str); // copy constructor
    ~String();                 // destructor

    String & operator=(const String &str); // copy assignment operator

    int size(void) const;

    friend ostream & operator<<(ostream &os, const String &str);

    // some logical operators
    friend bool operator>(const String &str1, const String &str2);
    friend bool operator<(const String &str1, const String &str2);
    friend bool operator==(const String &str1, const String &str2);
 
  private:
    char *string_;     // the "real" string
};