设为首页 加入收藏

TOP

3.6.5 代码分析(1)
2013-10-07 15:32:18 】 浏览:6364
Tags:3.6.5 代码 分析

3.6.5   代码分析(1)

Task类有两个TimeStamp类型的数据成员,这意味着使用了Task类的程序必须包含TimeStamp的类声明及其实现代码。Task类有四个私有数据成员:st,TimeStamp类型,表示Task起始时间;ft,TimeStamp类型,表示Task结束时间;id,string类型,表示Task ID;logFile,string类型,用于记录Task信息的日志文件的文件名。Task类包含若干公有成员函数,用于对数据成员st、ft和id进行set或get访问。

Task类声明了三个构造函数,包括一个默认构造函数和两个转型构造函数,这两个转型构造函数的参数都用于传入Task的ID值。由于任何Task在创建时都应该拥有一个惟一的Task ID,因此我们不允许如下的Task对象创建方式:

 
为了强调这一点,我们将Task类的默认构造函数定义为私有成员函数:
 
由于我们定义了其他的构造函数,所以编译器不会生成一个公有的默认构造函数,设计一个私有的默认构造函数的目的完全是为了强调创建Task对象时必须提供一个string类型或C风格字符串类型的Task ID:
 
两个公有的转型构造函数都只有一个参数,代表对象的Task ID。参数类型为string&的转型构造函数,按如下方式对所有的数据成员进行初始化:
 

该构造函数调用Task类的setID成员函数初始化Task ID;调用setST函数将起始时间初始化为当前时间,setST继续调用TimeStamp类的set成员函数,后者再调用库函数time。将起始时间设置为当前时间后,我们将Task的结束时间设置为它的起始时间,使这两个时间相重合。由于持续时间是起始时间与结束时间的间隔,所以当Task对象刚创建时,其持续时间为0。

参数类型为char*的转型构造函数的使用方法与参数类型为string&的几乎完全相同,惟一的区别就是一个接受C风格类型的字符串,一个接受string类型的字符串。

通过使用TimeStamp表示Task的起始和结束时间,我们可以借用TimeStamp类的功能。例如,Task类的存取起始、结束时间的功能就依赖于TimeStamp类的相关功能:

 
 

以上代码中,Task类的setFT和getFT成员函数将实际的工作交给TimeStamp类的set和get成员函数,这是一种典型的代码重用和功能包装:Task类的setFT和getFT成员函数仅仅包装了TimeStamp类的相应成员函数,并借助这些函数去完成实际的操作。

Task类还有一个公有成员函数,用于输出任务信息到日志文件,如果定义了Task类的对象t1,则可在任何时候通过该函数将t1目前的信息输出到日志文件:

 


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇3.6.5 代码分析(2) 下一篇3.5.12 课后练习(2)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目