![]() ![]() ![]() ![]() | Base class A and derived class B and C with virtual destructors. | Lecture 4 - slide 6 : 24 Program 5 |
// Illustration of virtual destructors in A-B-C class hierarcy. // We only need to declare a virtual destructor in the base class. #include <iostream> using namespace std; class A { private: double a; public: A(double a): a(a){}; virtual ~A(){cout << "A destructor" << endl;} // Class A is assumed to have virtual functions. //.... }; class B : public A { private: double b; public: B(double b): A(b-1), b(b){}; ~B(){cout << "B destructor" << endl;} //... }; class C : public B { private: double c; public: C(double b): B(b-1), c(b){}; ~C(){cout << "C destructor" << endl;} //... }; void f(){ A *a1 = new C(5.0); // Work on a1 // .... delete a1; // The destructor in C is called. // The destructor in B is called. // The destructor in A is called. } int main(){ f(); }