#include class Chain { public: Chain(const char* name, Chain* next) : name(name), next(next) { std::cout << "Chain \"" << name << "\" constructed" << std::endl; } ~Chain() { delete next; std::cout << "Chain \"" << name << "\" destructed" << std::endl; } private: const char* name; Chain* next; }; int main() { Chain* c1p = new Chain("chain member #1", nullptr); Chain* c2p = new Chain("chain member #2", c1p); Chain* c3p = new Chain("chain member #3", c2p); delete c3p; }