#include <iostream> class A{ public: A(){ std::cout << "A ctor" << std::endl; } ~A(){ std::cout << "A dtor" << std::endl; } }; class B{ public: B(){ std::cout << "B ctor" << std::endl; } ~B(){ std::cout << "B dtor" << std::endl; } }; class C: public B{ private: A _a; public: C(){ std::cout << "C ctor" << std::endl; } ~C(){ std::cout << "C dtor" << std::endl; } }; int main(int argc, char* argv[]){ C c; return 0; } /* B ctor A ctor C ctor ------- C dtor A dtor B dtor */