#include using namespace std; class animal { public: animal() { cout << "animal::ctor" << endl;} virtual ~animal() { cout << "animal::dtor" << endl;} }; class pet { public: pet() { cout << "pet::ctor" << endl;} virtual ~pet() { cout << "pet::dtor" << endl;} }; class dog : public pet { public: dog() { cout << "dog::ctor" << endl;} virtual ~dog() { cout << "dog::dtor" << endl;} }; class petdogs : public dog, public animal { public: petdogs() { cout << "petdogs::ctor" << endl;} virtual ~petdogs() { cout << "petdogs::dtor" << endl;} }; int main() { cout << "calling constructor left to right, depth first" << endl; petdogs *Lassie = new petdogs; cout << "************" << endl; cout << "calling destructors right to left, shallow first" << endl; delete Lassie; return 0; }