当我们的某个编译单元内的某个non-local static对象的初始化动作使用了另一编译单元的某个non-local static对象,它所用到的这个对象可以尚未被初始化。C++关于定义于不同编译单元内的non-local static对象的初始化次序并无明确定义。
比如在a.cpp里我们定义一个类,一个该类的对象
class FileSystem { public: size_t numDisks()const; }; extern FileSystem tfs;
现在同一个项目下的b.cpp文件中有一个类,类构造函数用到了tfs对象。
class Directory { public: Directory(params); }; Directory::Directory(params) { size_t disks = tfs.numDisks(); }
现在如果我们创建了一个Directory对象
除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自Effecvtive C++笔记:让自己习惯C++