3.4.5 代码分析(2)
extract函数是私有成员函数,只能由该类的公有成员函数调用。extract首先调用私有数据成员stamp的ctime。并将私有数据成员stamp的地址传给它,stamp是一个time_t类型的变量,用来存储一个表示时间的算术值。每次extract函数调用ctime时会产生一个新的代表时间的字符串,然后返回适当的子串。例如,为获取年份,extract函数从字符串中第二十个字符开始,取出共4个字符。
可通过如下方式定义TimeStamp类的对象:
定义了对象后,可通过0个参数或1个参数来调用set成员函数,例如:
set成员函数的定义如下:
set成员函数在其原型中为其参数s定义了默认值,因此set首先检查调用者是否提供了一个参数,如果提供了参数且参数值大于0,则将stamp设置为该值。对于其他情况,set成员函数通过调用库函数time获得当前时间,然后将stamp设置为当前时间。由于参数s的数据类型为signed long,因此将一个负数传递给set是合法的:
在这个调用中,ts对象的stamp被设置为当前的时间,而不是-999这样的非法时间值。
下面的代码列举了其余的公有成员函数(如get、getAsString、getYear以及其他一些返回时间标记的字符串或子串)的部分用法,如下所示:
上述代码中,get返回一个以整数表示的时间标记,其他成员函数以字符串形式返回整个时间标记或其中的某个子串。