1. What is the difference between composition and inheritance?
2. What is the difference between protected and private members?
3. How do the default constructors and destructors behave in an inheritance hierarchy?
4. What is a virtual member function?