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++法式設計有所贊助。