19.4 内部状态
aRequest的内部状态用myOperator和myOperand表示。第17行~第35行实现的函数允许其他类和代码获得这些变量的值。
如果看一下第18章的图18-2,就会发现并非所有的类都具有内部状态。例如,anExternalInterface根本没有成员变量。
aRequest实例的整个生命期只有一个内部状态,因为外部无法更改aRequest的成员变量。
anAccumulator实例的内部状态会频繁变化,因为每次调用Apply()都会改变anAccumulator的内部状态。
aController实例具有间接的内部状态。尽管aController的成员变量不会改变,但成员变量具有内部状态,其状态随着时间的变化而变化。
把函数声明为const对对象的内部状态非常重要。如果函数声明为const,编译器就会保证它不会修改成员变量。假如某个函数用类的const实例作为参数,若调用该对象的非const成员函数,编译器就会产生错误消息。所以,const可以让你更加确定对象是按要求使用的。应该在参数和函数上尽可能多地使用const,以减小对象误用的风险。
anAccumulator的实现如代码清单19-3所示。anAccumulator的内部状态比aRequest的更容易变化。
代码清单19-3 anAccumulator的实现
【责任编辑:
董书 TEL:(010)68476606】