问题遇到的现象和发生背景
在单例类头文件dbg_log_handler.h里面声明静态变量 m_dbg_Instance,在对应cpp dbg_log_handler.cpp里面定义这个静态变量 m_dbg_Instance.当我在全局函数调用这个单例类时,我发现每调用一次就构造一次.当我把这个静态变量的定义放在这个全局函数所在的cpp dbg_common.cpp里面时,则只构造一次,没有想明白为何会是这样子.
问题相关代码,请勿粘贴截图
dbg_log_handler.h
class DbgLogHandler final{
static DbgLogHandler& Instance() {
return m_dbg_Instance;
}
static DbgLogHandler m_dbg_Instance;
};
dbg_log_handler.cpp
DbgLogHandler DbgLogHandler ::m_dbg_Instance;
DbgLogHandler::DbgLogHandler()
: {
}
dbg_common.cpp
/m_dbg_Instance定义在这就构造一次,放在dbg_log_handler.cpp里面每调用一次info_log的接口就会构造一次这个单例,很奇怪/
int info_log(const char* format) {
DbgLogHandler& dbg = DbgLogHandler::Instance();
}