#pragma once
#include <iostream>
using namespace std;
class SingtonTest
{
public:
static SingtonTest* getInstance();
static bool destroy();
private:
static SingtonTest* instance;
int data;
private:
virtual bool init();
SingtonTest(void);
virtual ~SingtonTest(void);
SingtonTest(const SingtonTest& st);
SingtonTest& operator=(const SingtonTest& st);
public:
static int n;
};
#include "SingtonTest.h"
SingtonTest* SingtonTest::instance = NULL;
SingtonTest::SingtonTest(void)
{
static int count = 1;
cout<<"create instatnce: "<<count<<endl;
count++;
}
SingtonTest* SingtonTest:: getInstance()
{
if(!instance)
{
instance = new SingtonTest();
instance->init();
}
return instance;
}
bool SingtonTest::init()
{
data = 1;
return true;
}
SingtonTest::SingtonTest(const SingtonTest& st)
{
}
SingtonTest& SingtonTest::operator=(const SingtonTest& st)
{
return *this;
}
bool SingtonTest::destroy()
{
if (instance)
{
delete instance;
instance = NULL;
return true;
}
return false;
}
SingtonTest::~SingtonTest(void)
{
cout<<"delete"<<endl;
}
#include "SingtonTest.h"
int main()
{
SingtonTest* pSington1 = SingtonTest::getInstance();
SingtonTest* pSington2 = SingtonTest::getInstance();
SingtonTest* pSington3 = SingtonTest::getInstance();
SingtonTest::destroy();
return 0;
}