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.7.5 类成员和“辅助函数”

当我们试图最小化类接口时(在保证完整性的前提下),不得不忽略大量有用的操作。如果一个函数可以简单、优美、高效地实现为一个独立函数时(即实现为非成员函数),就应该将它的实现放在类外。采用这种方式,函数中的错误就不会直接破坏类对象中的数据。不访问类表示是很重要的,因为常用的debug技术是“首先排查惯犯”,即,当类出现问题时,我们首先检查直接访问类表示的函数:几乎可以肯定是这类函数导致的错误。如果这类函数只有十几个而不是50个的话,我们当然会很高兴。

Date类有50个成员函数!你一定认为我们是在开玩笑。但我们没有:几年前我调查了一些商用的Date库,发现这些库中充斥着像next_Sunday()、next_workday()这样的函数。对于一个设计目标更倾向于方便用户使用,而不是易于理解、实现和维护的类来说,有50个成员函数并不过分。

另一点值得注意的是,如果类表示改变,只有直接访问类表示的函数才需要重写。这是保持接口最小化的另一个重要原因。在Date例子中,我们可能会觉得用一个整数表示自1900年1月1日至今的天数,比用(年,月,日)的形式来表示好得多。如果做出这样的改变,只有成员函数需要进行修改。

下面是一些辅助函数(helper function)的例子:

辅助函数还被称为便利函数、帮助函数等。这类函数和其他非成员函数在逻辑上是有区别的——辅助函数是一种设计思想,而不是一种编程概念。辅助函数通常接受一个类对象作为其参数,它就是为这个类做辅助工作。当然也有例外,参考leapyear()。我们通常用名字空间来区分一组辅助函数,参见8.7节: ...

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