C++單例形式運用實例。本站提示廣大學習愛好者:(C++單例形式運用實例)文章只能為提供參考,不一定能成為您想要的結果。以下是C++單例形式運用實例正文
本文實例講述了C++單例形式及其相干運用辦法,分享給年夜家供年夜家參考。詳細辦法剖析以下:
界說:
一個類有且唯一一個實例,而且供給一個拜訪它的全局拜訪點。
要點:
1、類只能有一個實例;
2、必需自行創立此實例;
3、必需自行向全部體系供給此實例。
完成一:單例形式構造代碼
singleton.h文件代碼以下:
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
class Singleton
{
public:
static Singleton* GetInstance();
protected:
Singleton();
private:
static Singleton *_instance;
};
#endif
singleton.cpp文件代碼以下:
#include "singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout<<"create Singleton ..."<<endl;
}
Singleton* Singleton::GetInstance()
{
if(0 == _instance)
{
_instance = new Singleton();
}
else
{
cout<<"already exist"<<endl;
}
return _instance;
}
main.cpp文件代碼以下:
#include "singleton.h"
int main()
{
Singleton *t = Singleton::GetInstance();
t->GetInstance();
return 0;
}
完成二:打印機實例
singleton.h文件代碼以下:
#ifndef _SINGLETON_H_
#define _SINGLETON_H_
class Singleton
{
public:
static Singleton* GetInstance();
void printSomething(const char* str2Print);
protected:
Singleton();
private:
static Singleton *_instance;
int count;
};
#endif
singleton.cpp文件代碼以下:
#include "singleton.h"
#include <iostream>
using namespace std;
Singleton* Singleton::_instance = 0;
Singleton::Singleton()
{
cout<<"create Singleton ..."<<endl;
count=0;
}
Singleton* Singleton::GetInstance()
{
if(0 == _instance)
{
_instance = new Singleton();
}
else
{
cout<<"Instance already exist"<<endl;
}
return _instance;
}
void Singleton::printSomething(const char* str2Print)
{
cout<<"printer is now working , the sequence : "<<++count<<endl;
cout<<str2Print<<endl;
cout<<"done\n"<<endl;
}
main.cpp文件代碼以下:
#include "singleton.h"
int main()
{
Singleton *t1 = Singleton::GetInstance();
t1->GetInstance();
t1->printSomething("t1");
Singleton *t2 = Singleton::GetInstance();
t2->printSomething("t2");
return 0;
}
Makefile文件:
CC=g++
CFLAGS = -g -O2 -Wall
all:
make singleton
singleton:singleton.o\
main.o
${CC} -o singleton main.o singleton.o
clean:
rm -rf singleton
rm -f *.o
.cpp.o:
$(CC) $(CFLAGS) -c -o $*.o $<
運轉後果以下圖所示:
可以看到,對打印次序count的計數是持續的,體系中只要一個打印裝備。
願望本文所述對年夜家的C++法式設計有所贊助。