1. Static vs Dynamic Dispatch
    1. A method call will use the static type when it is an object or when the method is not defined as virtual in the static type that it was set. Otherwise it will use dynamic dispatch.
  2. Implmentations in .cc file vs in a .h file
    1. This for compilation efficiency, such that every file that includes the module doesn’t have to recompile on the change of implementation, and only on the change of declaration structure.
  3. Templated Classes
    1. A separate class is compiled for each type that the class is used with during compile time. This adds no time to runtime.
  4. Invariant
    1. A constraint or rule that will hold at the beginning and end of a program
  5. Object construction sequence
    1. Allocate memory
    2. run constructor of superclass
    3. initialize members in MIL
    4. run body of constructor
  6. Object destruction sequence
    1. run body of destructor