aihot  2020-11-12 09:23:24  OpenCV |   查看评论   
当我们的某个编译单元内的某个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对象

Directory tempDir(            
          
 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自Effecvtive C++笔记:让自己习惯C++

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]