实现类的不变式的做法是为类定义一个名为is_valid的方法。然后该类的每一个公有方法都把它放到断言里进行调用,进入方法和退出时都调用,前置条件之后进行类的不变式的检查。
不变式只对那些具有方法的类才是必要的,而对于仅仅作为变量聚合体的简单结构而言是没有必要的,就是说,任何具有方法的类都应该具有不变式。
基本上,断言是一种运行期测试,通常仅被用于调式版或测试版的构件。
断言被用于客户代码中侦测任何你认为绝不会发生的事情。
因为C++把指针隐式的解释为布尔值,所以我们可以借助于“字面字符常量可被转换为非零指针进而被转换为true”这个事实,把一则易于阅读的消息和断言的测试表达式进行逻辑与运算。#define MESSAGE_ASSERT(m, e) assert((m && e))
断言的用途:
A)检查特定于实现的假设
B)检查在方法的入口必须为真的条件(前置条件)
C)检查在方法的出口必须为真的条件(后置条件)
D)检查在任何时候对于一个对象必须为真的条件(不变式)
A)检查特定于实现的假设
B)检查在方法的入口必须为真的条件(前置条件)
C)检查在方法的出口必须为真的条件(后置条件)
D)检查在任何时候对于一个对象必须为真的条件(不变式)