背景
业务中出现日志打印失效,发现是因为管理日志对象的单例在运行过程中存在了多例的情况。下面通过还原业务场景来分析该问题。
测试代码
/* A.h */
#ifndef CALSS_A
#define CALSS_A
#include <iostream>
#include <cstddef>
class A {
public:
static A& GetInstance();
void SetNum(size_t num);
size_t GetNum();
private:
size_t m_num {
0U};
};
#endif
/* A.cpp */
#include "A.h"
A& A::GetInstance()
{
static A ins;
std::cout << "A " << &ins << std::endl;
return ins;
}
void A::SetNum(size_t num)
{
m_num = num;
}
size_t A::GetNum()
{
return m_num;