Source : Free On-Line Dictionary of Computing
dynamic binding
The property of {object-oriented programming} languages where
the code executed to perform a given operation is determined
at {run time} from the {class} of the operand(s) (the receiver
of the message). There may be several different classes of
objects which can receive a given message. An expression may
denote an object which may have more than one possible class
and that class can only be determined at run time. New
classes may be created that can receive a particular message,
without changing (or recompiling) the code which sends the
message. An class may be created that can receive any set of
existing messages.
{C++} implements dynamic binding using "{virtual member
function}s".
One important reason for having dynamic binding is that it
provides a mechanism for selecting between alternatives which
is arguably more robust than explicit selection by
conditionals or {pattern matching}. When a new {subclass} is
added, or an existing subclass changes, the necessary
modifications are localised: you don't have incomplete
conditionals and broken patterns scattered all over the
program.
See {overloading}.