在程序启动时执行函数

ZDNet软件频道 时间:2004-11-18 作者:Builder.com |  我要评论()
本文关键词:DannyKalev cpptips
有一些应用程序需要调用启动函数来分配 main() 函数开始执行时必须提供的资源。一个很好的例子是记录程序活动的一个日志实用工具。这个日志服务必须在 main() 之前开始,这样它才能记录程序的开始。
本文译自Builder.com,未经许可请勿转载

有一些应用程序需要调用启动函数来分配 main() 函数开始执行时必须提供的资源。一个很好的例子是记录程序活动的一个日志实用工具。这个日志服务必须在 main() 之前开始,这样它才能记录程序的开始。

为了保证这样可行,可以在全局对象的构造器中调用初始化函数。全局对象概念上是在 main() 开始之前构造的。例如:

class Init
{
public:
  Init()
  {
   log_activity();
  }
};

Init init; // global instance
int main()
{
 activity_report* rep=read_log();
  //..
}

在 main() 开始执行时,init 已经构造好了。在它的构造过程中,它调用了函数log_activity()。因此,main() 在开始执行时可以安全地立即从日志文件中读取数据。

这种方法还被标准模板库(Standard Template Library)广泛采用。例如,iostream对象cout和cin都是在 main() 之前构造的。C++ 如何保证全局对象在 main() 之前构造的呢?在大多数实现中,内核运行特殊的启动代码,这个特殊的启动代码在启动 main() 之前完成所有的初始化。


本文作者:Danny Kalev是一位具有14年经验的系统分析家、软件工程师,尤其擅长C++ 和面向对象设计。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134