title: How are virtual functions and vtable implemented?
body: <p>We all know what virtual functions are in C++, but how are they implemented at a deep level?</p>
  
  <p>Can the vtable be modified or even directly accessed at runtime?</p>
  
  <p>Does the vtable exist for all classes, or only those that have at least one virtual function? </p>
  
  <p>Do abstract classes simply have a NULL for the function pointer of at least one entry?</p>
  
  <p>Does having a single virtual function slow down the whole class? Or only the call to the function that is virtual?  And does the speed get affected if the virtual function is actually overwritten or not, or does this have no effect so long as it is virtual.</p>