构造函数是用来确保对象的非静态成员在创建时被初始化的.
任何时候,如果在不同的被编译单元中定义了 "非局部静态对象"
,并且这些对象的正确行为依赖于它们被初始化的某一特定顺序,这类问题就会产生。非局部静态对象指的是这样的对象:
· 定义在全局或名字空间范围内(例如:theFileSystem和tempDir),
· 在一个类中被声明为static,或,
·
在一个文件范围被定义为static。
记住
你绝对无法控制不同被编译单元中非局部静态对象的初始化顺序.解决这个问题的技术称为
"单件模式"(译注:即Singleton pattern,参见 "Design Patterns" 一书)-
单件技术本身很简单:
首先,把每个非局部静态对象转移到函数中,声明它为static;
其次,让函数返回这个对象的引用。
这样,用户将通过函数调用来指明对象。换句话说,用函数内部的static对象取代了非局部静态对象。
阅读(1606) | 评论(0) | 转发(0) |