public: Name(const char * aNameOfThing){ char * temp = new char[strlen(aNameOfThing) + 1]; strcpy_s(temp, strlen(aNameOfThing) + 1, aNameOfThing); nameOfThing = temp; } Name(const char * afirstName, const char * alastName){ char * firstNameTemp = new char[strlen(afirstName) + 1]; strcpy_s(firstNameTemp, strlen(afirstName) + 1, afirstName); firstName = firstNameTemp; char * lastNameTemp = new char[strlen(alastName) + 1]; strcpy_s(lastNameTemp, strlen(alastName) + 1, alastName); lastName = lastNameTemp; } Name(const Name & n){ //BOO! } ~Name() {...} Name & operator=(const Name & n) {...} static void printLastNameFirst(bool lastNameFirstIfTrue){...} void printOn(ostream & o) const { /*print name on output stream o*/ } private: char * firstName; char * lastName; char * nameOfThing; static bool printLastNameFirst; };