As
a guideline, you shouldn’t use a default argument as a flag upon which to
conditionally execute code. You should instead break the function into two or
more overloaded functions if you can. A default argument should be a value you
would ordinarily put in that position. It’s a value that is more likely
to occur than all the rest, so client programmers can generally ignore it or
use it only if they want to change it from the default value.
The
default argument is included to make function calls easier, especially when
those functions have many arguments with typical values. Not only is it much
easier to write the calls, it’s easier to read them, especially if the
class creator can order the arguments so the least-modified defaults appear
latest in the list.
An
especially important use of default arguments is when you start out with a
function with a set of arguments, and after it’s been used for a while
you discover you need to add arguments. By defaulting all the new arguments,
you ensure that all client code using the previous interface is not disturbed.