A failure on the precondition indicates a bug on the client/caller
A failure on the postcondition indicates a bug on the routine/supplier.

Inheritance:
Making sure that the precondition is always equal to or weaken than the basic version
    the postcondtion is always equal to or stronger than the base version.
       derived class invariant should be "and-ed" with its class invariant.
Recommended default settings are:
DBC_CHECK_ALL in Debug build
DBC_CHECK_PRECONDITION in Release build