A virtual method is declared for a class, and is intended to be polymorphic over all of that class's subclasses. But each subclass needs to provide its own definition of the virtual method. So the subclasses only inherit the responsibility to define those methods.

Nonvirtual methods are normally defined by parameteric polymorphism, where one definition works for a class and all of its subclasses. Virtual methods are defined by ad-hoc polymorphism, where each subclass needs to provide its own definition.