August 2021
Intermediate to advanced
450 pages
9h 36m
Chinese
到目前为止,我们已经以接口设计者和用户的角度考察了Date,但我们迟早要实现这些成员函数。第一步,我们先给出Date类声明的一个重新组织过的子集,它将公有接口放在最前面,这也是常用的风格:
人们把公有接口放在类的开始,是因为接口是大多数人最感兴趣的。理论上,用户无须了解类的实现细节,只需知道接口即可。实际上,我们通常会有好奇心,会快速浏览一下类的实现,看看它是否合理,我们是否能从中学到一些技术。但是,除非是实现者,否则我们会倾向于在公有接口上花更多的时间。编译器并不关心类函数和数据成员的顺序,你愿意以什么样的顺序来声明它们,编译器都能接受。
当我们在类外定义一个成员时,需要指明它是哪个类的成员,这可通过class_name::member_name方式来实现:
符号:y{yy},m{mm},d{dd}就是类成员初始化的语法,称为初始化列表。当然也可以这样写:
但后一种写法,原则上讲,是先用默认值对成员进行了初始化,然后又对它们进行了赋值。而且这种写法的一个潜在问题是,我们有可能无意地在成员初始化之前使用它们。:y{yy},m{mm},d{dd}这种方式更直接地表达了我们的意图。两种写法之间的区别与下面两段代码之间的区别是一样的: ...