static声明的函数放在main函数里时只有当main函数执行结束时才会调用static函数析构
文件open默认会在析构的时候close
以下情况写入文件会造成文件信息丢失,因为fstream也是基于缓存的,m_f<<info并不一定真正写入到文件里去只是写入到操作系统文件缓存里,文件缓存保证在当程序退出会真正写入到文件里,所以当同时OPEN同样一个文件时,调用析构时会造成只记录第一条日志后面日志丢失,调用flush()函数写入文件会造成只记录最后一条日志
将static Log log(1,“log.log”)声明放在函数体外部则能打输完整日志信息
当文件open的时候操作系统会产生一个指针指向文件头,所以以下两句写入语句操作系统的文件头是一样的
调用flush的时候会重新往文件头中写进行覆盖,没调用flush时会在析构时调用close的时候进行覆盖
不调用flush()有可能造成文件丢失,调用flush()性能也有可能造成影响
如果需要信息马上保存则需要调用flush()
静态函数调用构造与析构顺序如下:
C++文件操作需要注意的事项(C++文件相关)
猜你喜欢
转载自blog.csdn.net/qq_39885372/article/details/103948060
今日推荐
周排行