Please enable JavaScript.
Coggle requires JavaScript to display documents.
MM8 - Coggle Diagram
MM8
Chapter 32: Templates
More efficient
One template instead of multiple similar functions/classes
Defining Templates
template<class T>
Template Instantiation
Instantiating Template Funcitons
Instantiated when first called
Instantiation of Template Classes
Done Implicitly
Doesn't reduce the amount of machine code
But saves time developing
Template Parameters
& Restrictions
Multiple can be defined
Restrictions
They cannot be modified
Can't be float
Chapter 26: Abstract Classes
Pure virtual methods
Defines Abstract Classes
virtual void demo()=0;
Deriving Abstract Classes
Inherits all methods of base
Can't define objects
Pointers and Refs
Can be declared abstract
References
Often used as params
Pointers
Adress dynamically allocated objects
Virtual Assignment
Virtual Operator Functions
Can be virtual when implemented as methods
Application Example:
Inhomogenous List
Chapter 25 - Polypmorphism
Virtual Methods
Implement Polymorphic Classes
Does not need to be redefined in base class
Declare - "Virtual"
Redefinition of Derived Class
Same signature
Same return type
Destroying Dynamically
Allocated Objects
Destructors in derived classes
Derived Class - Called first
Base Class - executed second
Multiple objects in derived class
Memory issues
Solved through
Virtual Destructors
Static Binding
Adress know at time of comp.
Dynamic Binding
If called by pointer or ref
Runs at unknow time
VMT (
Virtual Method Tables
)
Dynamic Casts
Downcasts
Safety Issues
dynamic_cast operator
Performs safe downcast
Specific to Polymorphic classes
dynamic_cast<type>(expression)