A virtual function is one which will call the most derived override of the function unless a specific version of the function is specified.
Overriding a function means that you replace the behavior of a function defined by a parent class. It is most useful when the function is virtual, but it has some use when the function is no virtual.