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()

posted @ 2012-10-08 20:24  天天520  阅读(2340)  评论(0编辑  收藏  举报