//单例模式
//main.cc
#include "Single.h"
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
Single::GetInstance();
Single::GetInstance();
return 0;
}
//Single.h
class Single
{
public:
static Single &GetInstance();
private:
Single();
Single(const Single &);
Single &operator = (const Single &);
};
//Single.cpp
#include "Single.h"
#include <iostream>
using namespace std;
Single &Single::GetInstance()
{
static Single instance;
return instance;
}
Single::Single()
{
cout<<"Hello,this your world!" <<endl;
}
虽然 main 函数中调用了两次 Single::GetInstance();
但只有一次 “Hello,this your world!”的输出,也就是单例模式成功了!
//其它的实现方式!
#include <iostream>
using namespace std;
class Single
{
private:
Single();
virtual ~Single();
static Single *instance;
public:
static Single *GetInstance();
};
Single::Single()
{
cout<<"Hello,this your world!" <<endl;
}
Single::~Single()
{
delete instance;
}
Single *Single::instance = new Single();
Single *Single::GetInstance()
{
return instance;
}
int main(int argc, char *argv[])
{
Single *single1 = Single::GetInstance();
Single *single2 = Single::GetInstance();
return 0;
}