Inheritance – The Basics
The Inheritance relation definition
Defining Derived Classes
Extending and Overriding Default behaviour - Virtual Methods
The Protected accessibility level
Polymorphism
The Polymorphism Idea
Base – Derived compatibility
Creating Polymorphic Code – Examples
Utilizing Inheritance in Development
Creating an inheritance tree – distributing data members declarations; methods declarations and methods definitions
Pure virtual methods and abstract classes
Construction and Destruction of derived objects – Virtual Destructors
Interface Classes
Dynamic Binding
Static vs. Dynamic Binding; How is dynamic binding implemented? What are the “prices”? – Storage and run-time
Inheritance and Polymorphism – Advanced Topics
Inheritance and static data members; Redefining non-virtual Methods; Object slicing; Private and Protected Inheritance;Overloading between base and derived; etc.
Multiple Inheritance – When is it required? Possible ambiguity problems; The problematic “diamond structure” - Virtual Inheritance
RTTI – Run Time Type Information – When is it required? The type_id operator; The dynamic_cast operator