首页 > 代码库 > C++单例模式

C++单例模式

以前在项目中使用单例模式时,喜欢使用静态指针实现,但是需要在程序结束时释放指针的内容,不然会造成内存泄漏,代码如下:

Log& Log::instance()
{
    if(NULL == ms_log)
    {
        static Log ms_log = new Log("./log.txt");
        if(!ms_log->m_logout.good())
        {
            std::cout << "log file \"./log.txt\"" << std::endl;
        }
    }
    return *ms_log;
}

今天发现可以使用静态对象来避免这个问题:

Log& Log::instance()
{
    static Log slog("./log.txt");
    if(!slog.m_logout.good())
    {
        std::cout << "log file \"./log.txt\"" << std::endl;
    }
    return slog;
}

一切伟大的思想和行动都有一个微不足道的开始。

C++单例模式