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.1 参数类型

当我们在9.4.3节中为Date定义构造函数时,使用了三个整型作为其参数。这会带来一些问题:

第一个问题(非法的日期)比较容易处理,在构造函数中进行检测即可。但是,第二个问题(月和日的混淆),通过用户编写的检测代码是无法查找出来的。这个问题是由于人们书写月和日的习惯不同而造成的:例如,4/5在美国表示4月5日,但在英国表示5月4日。我们不能指望不遇到这个问题,必须采取其他手段解决它。一种明显的解决方案是使用Month类型:

如果使用了Month类型,当我们颠倒了月和日这两个参数时,编译器就会捕获这个问题。而且,使用一个枚举类型作为月的类型,令我们可以使用符号名来表示月份,这样的代码通常比直接使用数字更易读,因而也更不容易出错:

这段代码中,编译器帮我们避免了很多“意外”。注意代码中使用了枚举量mar的限定名Month::mar。我们没有用Month.mar,因为Month不是一个对象(而是一个类型),而mar也不是一个数据成员(而是一个枚举量——一个符号常量)。我们在类名、枚举名或名字空间名(参见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