设为首页 加入收藏

TOP

19.4 内部状态(2)
2013-10-07 01:01:57 来源: 作者: 【 】 浏览:68
Tags:19.4 内部 状态

 
 

从第10行可以看出,在用默认构造函数实例化anAccumulator时,myValue会被初始化为0。

第14行~第16行是复制构造函数的函数头和初始化myValue。myValue被初始化为与参数theAccumulator的myValue相同。

当执行完构造函数后,对象就会被创建,对象的成员函数myValue也会进入安全和可用的状态。如果成员变量没有被初始化,变量的值就可能是随机的。这也是构造函数为什么重要的原因。

这也是我们在良好设计的类中看不到公有成员变量的原因。对象无法控制其公有成员变量被更改,也无法保证赋值是否正确。但在成员函数的代码中,我们可以检查和验证输入值。所以使用getter和setter函数更能保证对象在生命期内保持一致的内部状态。

第24行~第38行在调用anAccumulator实例的Apply()时改变成员变量myValue的状态。代码使用简短的算术赋值运算符(+=、-=、*=和/=)改变myValue的状态。

第40行~第49行通过抛出runtime_error异常处理接收意料之外的运算符的情况。可以看到,异常报告了发现错误所在的命名空间、类、函数以及错误消息。这在调试时很有用。

还可以看到,异常抛出代码块使用C++(www.cppentry.com)标准库的string类(用#include <string>引用,在std命名空间中)产生消息。std::string类允许用+连接多个字符串,非常像cout中使用多个<<操作符在一行显示多个变量。string()是string类的构造函数,可以把C++(www.cppentry.com)字符串字面量(实际为char*)转换为std::string。

【责任编辑:董书 TEL:(010)68476606】


回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇19.1 类的标记 下一篇19.4 内部状态(1)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: