A class invariant is a condition that defines all valid states for an object. It
is a logical condition to ensure the correct working of a class. Class invariants
must hold when an object is created, and they must be preserved under all operations
of the class. In particular all class invariants are both preconditions and post-conditions
for all operations or member functions of the class.