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版)

10.8 用户自定义输出运算符

为一个给定类型定义输出运算符<<,是一件很简单的事情。要考虑的主要问题是不同人可能喜欢不同的输出形式,因此很难达成共识来确定一个单一的格式。但即便无法提供一个令所有人都满意的单一输出格式,为用户自定义类型定义输出运算符<<,通常也是一个好的策略。这样,我们至少可以在调试和早期开发期间,很容易地输出这个类型的对象。接下来,我们还可以提供一个更为复杂的<<,允许用户给出格式信息。而且,如果我们希望输出样式与<<提供的不同,可以简单地绕过<<,按照我们希望的格式直接输出用户自定义类型中的内容。

下面是为9.8节中Date类型定义的一个简单的输出运算符,它简单地打印年、月、日,中间用逗号分隔,两边加括号:

这个输出运算符会将2004年8月30日打印为“(2004,8,30)”的形式。这种简单的成员列表的表示方式,对于成员数较少的类型来说很适合,除非我们有更好的想法或者更特殊的需求。

在9.6节中,我们提到,处理一个用户自定义运算符,实际是调用对应的函数。下面的例子演示了这一处理过程,假定已经为Date定义了上面的<<操作符,那么

其中d1是Date类型的对象,等价于下面的调用:

需要注意operator<<()是如何接受一个ostream&作为第一个参数,又将其作为返回值返回的。这就是为什么可以将输出操作“链接”起来的原因,因为输出流按这种方式逐步传递下去了。例如,可以像下面这样输出两个日期: ...

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