I have found some code that I am working on, and was wondering what the best design implementation is.
If a base class defines a method as virtual, but implements an empty body as well, thus not requiring the derived classes to implement a body, should it not be made pure instead?
virtual void AMethod1() {} // 1
virtual void AMethod2() {assert(false);} // 2
virtual void AMethod3() = 0; // 3
- Current code.
- Idea1: Alerts user that this derived object has not implemented this method body.
- Idea2: Forces derived classes to implement a body, empty or not.
What do you, the trusted amazing SO people, think?
Edit1: After posting (and reading answers), I realize that assert is bad!
virtual void AMethod3() = {throw (ENotImplemented)}; // 4