Can I write a class which has virtual methods – (which can be overridden but have a default behaviour) and also abstract methods – (which have to be overridden)
Can I have a definition in which I define implementations for the virtuals but not the abstracts?
Additionally can I create abstract methods that don’t have an implementation in a non abstract / pure virtual class?
Yes.
Yes.
No. The presence of pure virtual members prohibits you from creating class instances, i.e. makes the class abstract.