最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++單例模式應(yīng)用實例

 更新時間:2014年10月08日 11:45:43   投稿:shichen2014  
這篇文章主要介紹了C++單例模式應(yīng)用實例,詳細講述了單例模式的原理與結(jié)構(gòu),及相關(guān)的打印機應(yīng)用實例,需要的朋友可以參考下

本文實例講述了C++單例模式及其相關(guān)應(yīng)用方法,分享給大家供大家參考。具體方法分析如下:

定義:

一個類有且僅有一個實例,并且提供一個訪問它的全局訪問點。
要點:
1、類只能有一個實例;
2、必須自行創(chuàng)建此實例;
3、必須自行向整個系統(tǒng)提供此實例。

實現(xiàn)一:單例模式結(jié)構(gòu)代碼

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;
}

實現(xiàn)二:打印機實例

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的計數(shù)是連續(xù)的,系統(tǒng)中只有一個打印設(shè)備。

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

相關(guān)文章

  • 詳解Qt中線程的使用方法

    詳解Qt中線程的使用方法

    這篇文章主要為大家詳細介紹了Qt中線程的使用方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)Qt有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • 淺析棧區(qū)和堆區(qū)內(nèi)存分配的區(qū)別

    淺析棧區(qū)和堆區(qū)內(nèi)存分配的區(qū)別

    以下是對棧區(qū)和堆區(qū)內(nèi)存分配的區(qū)別進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • 深度揭秘C++面向?qū)ο缶幊讨欣^承的核心概念

    深度揭秘C++面向?qū)ο缶幊讨欣^承的核心概念

    我們知道C語言是面向過程的編程語言,C++在C語言的基礎(chǔ)上進化出了面向?qū)ο蟮哪P?,而繼承就是面向?qū)ο蟮闹匾獙傩?,下面就讓小編來和大家詳細講講吧
    2023-07-07
  • C語言算法練習(xí)之?dāng)?shù)組求素數(shù)

    C語言算法練習(xí)之?dāng)?shù)組求素數(shù)

    這篇文章主要為大家介紹了C語言算法練習(xí)中數(shù)組求素數(shù)的實現(xiàn)方法,文中的示例代碼講解詳細,對我們學(xué)習(xí)C語言有一定幫助,需要的可以參考一下
    2022-09-09
  • C++ Boost Archive超詳細講解

    C++ Boost Archive超詳細講解

    Boost是為C++語言標(biāo)準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準庫的后備,是C++標(biāo)準化進程的開發(fā)引擎之一,是為C++語言標(biāo)準庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • C語言數(shù)據(jù)結(jié)構(gòu)之簡易計算器

    C語言數(shù)據(jù)結(jié)構(gòu)之簡易計算器

    這篇文章主要為大家詳細介紹了C語言數(shù)據(jù)結(jié)構(gòu)之簡易計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 在C++中實現(xiàn)aligned_malloc的方法

    在C++中實現(xiàn)aligned_malloc的方法

    這篇文章主要介紹了在C++中實現(xiàn)aligned_malloc的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • C語言實例之雙向鏈表增刪改查

    C語言實例之雙向鏈表增刪改查

    雙向鏈表(Doubly Linked List)是一種常見的數(shù)據(jù)結(jié)構(gòu),在單鏈表的基礎(chǔ)上增加了向前遍歷的功能,與單向鏈表不同,雙向鏈表的每個節(jié)點除了包含指向下一個節(jié)點的指針外,還包含指向前一個節(jié)點的指針,本文給大家介紹了C語言中雙向鏈表的增刪改查
    2023-08-08
  • 在vs2010中,輸出當(dāng)前文件路徑與源文件當(dāng)前行號的解決方法

    在vs2010中,輸出當(dāng)前文件路徑與源文件當(dāng)前行號的解決方法

    本篇文章是對在vs2010中,輸出當(dāng)前文件路徑與源文件當(dāng)前行號的解決方法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • C++內(nèi)聯(lián)函數(shù)詳情

    C++內(nèi)聯(lián)函數(shù)詳情

    這篇文章主要介紹了C++內(nèi)聯(lián)函數(shù),文章主要圍繞C++內(nèi)聯(lián)函數(shù)的相關(guān)資料展開詳細內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11

最新評論

莎车县| 北宁市| 彰化市| 明溪县| 基隆市| 南丰县| 滁州市| 麦盖提县| 英山县| 府谷县| 阜平县| 永寿县| 巴中市| 耒阳市| 水城县| 昌黎县| 宝清县| 阳东县| 曲麻莱县| 贞丰县| 银川市| 麟游县| 长治市| 阿拉善右旗| 监利县| 海安县| 腾冲县| 平昌县| 平度市| 衡阳市| 青冈县| 琼中| 象州县| 鹤岗市| 岑溪市| 广灵县| 武隆县| 宁武县| 合阳县| 敦化市| 保靖县|