params);
上面的代码就可能会出问题,除非能保证tfs在tempDir之前先初始化,否则tempDir的构造函数会用到尚未初始化的tfs。
解决方案:
C++保证,函数内的local static对象会在该函数被调用期间,首次遇到该对象的定义的时候被初始化。
所以如我们把tfs和tempDir设计为一个函数,函数返回该类的一个static对象引用就可以解决问题了。
所以我们可以改写上面的代码:
FileSystem& tfs() { static FileSystem fs; return fs; } Directory& tempDir() { static Directory td; return td; }
请记住