Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1707498
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: C/C++

2007-03-07 16:54:08

构造函数是用来确保对象的非静态成员在创建时被初始化的.

任何时候,如果在不同的被编译单元中定义了 "非局部静态对象" ,并且这些对象的正确行为依赖于它们被初始化的某一特定顺序,这类问题就会产生。非局部静态对象指的是这样的对象:

· 定义在全局或名字空间范围内(例如:theFileSystem和tempDir),
· 在一个类中被声明为static,或,
· 在一个文件范围被定义为static。

记住你绝对无法控制不同被编译单元中非局部静态对象的初始化顺序.
解决这个问题的技术称为 "单件模式"(译注:即Singleton pattern,参见 "Design Patterns" 一书)- 单件技术本身很简单:
首先,把每个非局部静态对象转移到函数中,声明它为static;
其次,让函数返回这个对象的引用。
这样,用户将通过函数调用来指明对象。换句话说,用函数内部的static对象取代了非局部静态对象。





阅读(1606) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~