单实例模板类(一次面试经历)

单实例模板类(一次面试经历)
template < class  T >
class  Singleton{
public :
    
static  T *  getInstance(){
        
if (ptr == NULL){
            ptr
= new  T(); // (T*)(::operator new(sizeof(T)));
        }
        
return  ptr;
    }
private :
    Singleton(){};
    
static  T *  ptr;
};
template
< typename T >
T
*  Singleton < T > ::ptr = 0 ;

class C{
public:
    int x;
    C(){
        x=0;
    }
    ~C(){
        cout<<"C delete"<<endl;
    }
};

int  main(){
    C
*  c = Singleton < C > ::getInstance();
    C
*  d = Singleton < C > ::getInstance();

    cout
<< c << "   " << d << endl;
}

当时一时没反应过来,用的较多的还是实例化的单体类.这里笔记一下。不过模板类有其自己方便的地方。所以还是有必要的.

你可能感兴趣的:(单实例模板类(一次面试经历))