/*************************************
CSingleton.h
**************************************/
#pragma once
#include <iostream>
#include <string>
using namespace std;
class CSingleton
{
private:
CSingleton(){
cout<<"new instance created!"<<endl;
};
CSingleton(const CSingleton& _copyInst);
private:
static CSingleton* g_singleton;
public:
//这里是单键模式类的关键
//我在这里实现的是对象的单件,而不是类的单件。
//要实现类的单件的话,就必须要把类的成员都变为static.
static CSingleton* getSingleton(){
if(!g_singleton)
g_singleton = new CSingleton();
return g_singleton;
}
};
/******************************************
testclass.h
*******************************************/
#include "CSingleton.h"
#include <iostream>
using namespace std;
class testSingleton
{
public:
testSingleton(){
CSingleton::getSingleton();
cout<<"ok, called!"<<endl;
}
};
/*******************************************
CSingleton.cpp
********************************************/
#include "CSingleton.h"
CSingleton* CSingleton::g_singleton = NULL;
/*******************************************
testSingleton.cpp
********************************************/
/*
设计模式: 单件模式
by 何戬, [email protected]
*/
#include <iostream>
#include "CSingleton.h"
#include "testclass.h"
using namespace std;
int main()
{
CSingleton::getSingleton();
CSingleton::getSingleton();
//testSingleton newtest;
return 0;
}