1. Are we required to provide default definitions for (non-pure) virtual functions in a base class? My intuition tells me yes because from what I understand a base class with virtual functions (and no pure virtual functions) is just like any other class save for the fact that its virtual functions may be re-defined by its child classes... But I want to double check this with you guys.

2. If a class contains X functions and one of the X functions is pure virtual, then the class automatically becomes an abstract base class and objects of the class cannot be instantiated. If this is the case, then is it necessary to provide definitions for the other virtual functions that are not pure virtual?

I know these questions seem useless since I can't think of a reason to not want to provide default definitions for virtual functions either way, but I'm preparing for a theory mid-term and I think it would be good to know these kinds of things for the test...

Thanks