国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++單例模式應用實例

2020-01-26 15:16:13
字體:
來源:轉載
供稿:網友

本文實例講述了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 -Wallall:  make singletonsingleton:singleton.o/  main.o    ${CC} -o singleton main.o singleton.oclean:  rm -rf singleton  rm -f *.o.cpp.o:  $(CC) $(CFLAGS) -c -o $*.o $<

運行效果如下圖所示:

 

可以看到,對打印順序count的計數是連續的,系統中只有一個打印設備。

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇信县| 体育| 德清县| 正定县| 托里县| 大连市| 霍山县| 乌鲁木齐县| 博野县| 铜山县| 莱西市| 綦江县| 松滋市| 满洲里市| 新河县| 庆云县| 洱源县| 嘉黎县| 云阳县| 祁阳县| 松桃| 西林县| 平湖市| 久治县| 讷河市| 沙雅县| 定远县| 星座| 利津县| 通化市| 马尔康县| 四子王旗| 绥化市| 开封市| 十堰市| 金阳县| 牙克石市| 汉阴县| 洛阳市| 普陀区| 天祝|