Virtual Functions, Inheritance and Friends