Nice quick-and-dirty guide. The only thing I personally would have added more emphasis on is explaining (via code examples) the actual use case of virtual methods: storing instances of derived objects in a base class pointer/reference, while still calling the correct runtime type's method.