Generally, writing the least code that will _readably_ do the job is a good thing, so omitting default parameter values seems to make sense. Unfortunately, when you omit them from the ``++base++`` call in an override, you're not actually getting the job done thoroughly, because you're ignoring the value the caller passed in. The result will likely not be what the caller expected.