Cascade constructor and destructor call
#include <iostream> using namespace std; class base { public: base(void) {cout << "Constructing base.\n";} ~base(void) {cout << "Destructing base.\n";} }; class derived1 : public base { public: derived1(void) {cout << "Constructing derived1.\n";} ~derived1(void) {cout << "Destructing derived1.\n";} }; class derived2 : public derived1 { public: derived2(void) {cout << "Constructing derived2.\n";} ~derived2(void) {cout << "Destructing derived2.\n";} }; int main(void) { derived2 object; }