#include 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