#include <iostream.h>

class C {
public:
  char* salutation;
  C() { salutation=0; }   // explicit default constructor
  C(char* c) {            // initializing constructor
    salutation=new char[strlen(c)+1];
    strcpy(salutation,c);
  }//end constructor
  C& operator=(const C& c) {        // assignment
    if (this!=&c) {                 // don't copy itself
      if (salutation) delete[] salutation;   // de-construct
      salutation=new char[strlen(c.salutation)+1];  //reconstruct
      strcpy(salutation,c.salutation);
    }
    return *this;
  }//end operator=
  ~C() { if (salutation) delete[] salutation; }   // destructor
};//end class C


// function main ------------------------------------------------
int main()
{
  C c1("hey Joe"), c2;
  
  c2=c1;
  return 0;
}//end main