Skip to Content
C++程序设计:原理与实践(基础篇)(原书第2版)
book

C++程序设计:原理与实践(基础篇)(原书第2版)

by 本贾尼 斯特劳斯特鲁普
August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
Pearson
Content preview from C++程序设计:原理与实践(基础篇)(原书第2版)

9.4.3 保持细节私有性

现在,我们还有一个问题没有解决:如果有人忘了使用成员函数add_day()怎么办?如果有人决定直接修改月份怎么办?毕竟,我们“忘了”提供这些功能:

只要我们还是将Date的描述暴露给所有人,那么就会有人(无意地或有意地)把事情搞乱——也就是制造出非法的日期值。例如上面的代码就创建了日历上不存在的日期。这样的非法对象会成为定时炸弹:有人无意间使用非法值只是时间问题,他会得到一个运行时错误,而通常情况会更糟,程序会产生错误的结果。

上述担忧使我们得到如下结论:Date的描述对用户来说应该是不可访问的,除非是通过类中提供的公有成员函数来访问。下面是按这种思想改进后的第一个版本:

使用新版Date的示例如下:

“合法日期”的概念是合法值思想的一个重要特例。我们在设计类型时,设法保证合法值。即,我们隐藏类描述,提供一个创建合法对象的构造函数,所有成员函数的设计也遵循接受合法值、生成合法值的原则。对象的值通常称为状态(state),因此,合法值的思想通常被称为对象的合法状态(valid ...

Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Start your free trial

You might also like

C++语言导学(原书第2版)

C++语言导学(原书第2版)

本贾尼 斯特劳斯特鲁普
管理Kubernetes

管理Kubernetes

Brendan Burns, Craig Tracey
Go程序设计语言

Go程序设计语言

艾伦A. A.多诺万, 布莱恩W. 柯尼汉

Publisher Resources

ISBN: 9787111562252