使用情境:确保一个类仅有一个对象实例.
// singleton.h
#ifndef SINGLETON_H
#define SINGLETON_H
class Singleton
{
private:
Singleton();
static Singleton* single_instance;
public:
static Singleton* GetInstance();
};
#endif // SINGLETON_H
// singleton.cpp
#include "singleton.h"
#include <stdlib.h>
Singleton* Singleton::single_instance = NULL;
Singleton::Singleton(){}
Singleton* Singleton::GetInstance()
{
if(single_instance == NULL)
{
single_instance = new Singleton();
}
return single_instance;
}
客户端:
// main.cpp
#include <iostream>
#include "singleton.h"
using namespace std;
int main(int argc, char *argv[])
{
Singleton* s1 = Singleton::GetInstance();
Singleton* s2 = Singleton::GetInstance();
if(s1 == s2)
cout << "same" << endl;
else
cout << "diff" << endl;
return 0;
}