类不变式的实现: 每个类定义一个非公有的非虚方法isValid(),不带参数,返回布尔值。
每次调用公有函数时,开始时调用一次该方法(在先验条件测试之后),并在结束时再调用一次;在有些实现中,不变式方法内部可能也会有断言,而不必等到返回
至它的调用者。
void MyClass::foo()
{
ASSERT(isValid());
...
ASSERT(isValid());
}
摘自《Extended STL》
isValid()非虚函数是必须的,不然有可能被子类覆盖.
非公有好像没什么必要,不知有什么用意。