设为首页 加入收藏

TOP

3.6.5 代码分析(2)
2013-10-07 15:32:20 】 浏览:993
Tags:3.6.5 代码 分析

3.6.5   代码分析(2)

我们可以看到logToFile成员函数拥有相当多的代码,通常它本不应成为一个内联函数。在本例中之所以这样做,是因为我们将所有的函数都放到Task类声明当中定义,以方便客户程序使用。

在logToFile成员函数的函数体中,if语句检查task的结束时间与起始时间是否相同。如果相同,将task结束时间设置为当前时间。在第2章中,我们曾经通过调用ofstream的open成员函数来打开一个文件,这里我们使用构造函数来完成同样的操作:

 
这和先定义对象,再调用open成员函数是一样的:
 

ofstream拥有众多的构造函数和open成员函数的重载版本。此处我们用的是带两个参数的构造函数,第一个参数是用C风格字符串表示的文件名,我们使用string的c_str成员函数将string类型字符串转变为所需类型。第二个参数是指文件的打开模式,本例我们使用ios::app,表示用追加模式打开文件。追加模式,是指写入的信息将追加到文件的结尾。表3-1列出了各种文件打开模式及其含义。

表3-1   文件打开模式

 

在成员函数logToFile中,ofstream对象outfile的生存范围是logToFile的函数体。因此,当logToFile退出时,outfile对象被摧毁从而自动调用其析构函数,而该析构函数会关闭打开的文件流。因此,本例中对outfile对象作出的close调用是多余的。之所以这样做,是为了对关闭文件流这个操作进行强调。

为防止程序员忘了在Task对象被摧毁之前调用logToFile函数,Task类在其析构函数中调用该函数,以确保任何任务的信息都输出到日志文件当中。

在下面的代码段中:

 
对象t2的析构函数在超出其所处的程序段时被调用,对象t1的析构函数则在main函数退出时被调用,并将输出信息至日志文件。
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇3.6.3 解决方案 下一篇3.6.5 代码分析(1)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目