#include class Name { char* name; public: Name(); Name(const char *name); ~Name(); Name& operator=(const Name&); }; Name::Name() { cout << "Name default constructor." << endl; name = nullptr; } Name::Name(const char *name) { cout << "Name constructor: " << name << endl; this->name = strdup(name); } Name::~Name() { cout << "Name destructor: " << name << endl; free(name); name = nullptr; } Name& Name::operator=(const Name& a) { cout << "--- Operator= ---\n"; if(name != nullptr) free(name); name = strdup(a.name); return *this; }