//: C15:VirtualsInDestructors.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Virtual calls inside destructors #include using namespace std; class Base { public: virtual ~Base() { cout << "Base1()\n"; f(); } virtual void f() { cout << "Base::f()\n"; } }; class Derived : public Base { public: ~Derived() { cout << "~Derived()\n"; } void f() { cout << "Derived::f()\n"; } }; int main() { Base* bp = new Derived; // Upcast delete bp; } ///:~