C++单例模板

#pragma once

template <typename T>
class Singleton
{
public:
    static T *GetInstance()
    {
        if (NULL == s_ins)
        {
            s_ins = new (T)();
            atexit(Destory);
        }

        return s_ins;
    }

private:
    static void Destory()
    {
        delete s_ins;
        s_ins = NULL;
    }

    Singleton(){}

    ~Singleton(){}

private:
    static T* volatile s_ins;
};

template <typename T>
T* volatile Singleton<T>::s_ins = NULL;

用法:

Singleton<TestClass>::GetInstance()->Func()

原文地址:https://www.cnblogs.com/4tian/p/2715745.html