it will enforce any subsequent classes those are derived from it to implement this function in their own class...
No, it won't. I worded my post very precisely.
A class must define or inherit a concrete implementation of all its pure functions in order not to be abstract. However, if a class doesn't mind being abstract, it doesn't need to override its pure functions. There is a school of thought in object-oriented design (especially in C++) that says that only leaf classes of the hierarchy should ever be concrete.