リソースの自動回収の単一モード
5946 ワード
本文は1种のとても简単な资源を自动的に回収することができる単例のモードを绍介して、ふだんもよく别の书く技术の文章を见て、CSDNの中に多くの牛人がいて、彼らの书く文章は分かりやすくて、言叶は简単で、文章を见る人に美しい楽しみをもたらすことができます.しかし、技術的な文章を書く子供靴の文章が冗長で、おならの話がたくさんあって、時間を無駄にしています.はい、私はくだらないことを言わないで、本文が必要な人に役立つことを望んでいます.試験環境:Linux CentOS 7.2
直接コードをつけると、仲間たちは自分の環境にコピーしてコンパイルして実行することができます.C++これは、やはり自分で噛んでこそ味がします.
コードブロック[SingletonLogManager.h]
コードブロック[SingletonLogManager.cpp]
コードブロック[main.cpp]
直接コードをつけると、仲間たちは自分の環境にコピーしてコンパイルして実行することができます.C++これは、やはり自分で噛んでこそ味がします.
コードブロック[SingletonLogManager.h]
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: SingletonLogManager.h
* Author: Jerry
*
* Created on 2017 8 8 , 2:25
*/
#ifndef SINGLETONLOGMANAGER_H
#define SINGLETONLOGMANAGER_H
#include
using namespace std;
class SingletonLogManager
{
public:
static SingletonLogManager* GetInstance(); //
public:
void print();
protected:
SingletonLogManager();
~SingletonLogManager();
//
class SingletonRecovery
{
public:
SingletonRecovery()
{
}
~SingletonRecovery()
{
cout << " begin to run destruction !" << endl;
if (m_pInstance != NULL)
{
delete m_pInstance;
m_pInstance = NULL;
}
}
};
//
static SingletonRecovery m_SR;
private:
static SingletonLogManager* m_pInstance; //
};
#endif /* LOGTOOL_H */
コードブロック[SingletonLogManager.cpp]
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: LogTool.cpp
* Author: Jerry
*
* Created on 2017 8 8 , 2:25
*/
#include
#include
#include "SingletonLogManager.h"
// new
SingletonLogManager* SingletonLogManager::m_pInstance = new SingletonLogManager;
SingletonLogManager::SingletonRecovery SingletonLogManager::m_SR;
SingletonLogManager::SingletonLogManager()
{
}
SingletonLogManager::~SingletonLogManager()
{
}
//
SingletonLogManager* SingletonLogManager::GetInstance()
{
return m_pInstance;
}
void SingletonLogManager::print()
{
printf("SingletonLogManager::print()
");
}
コードブロック[main.cpp]
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: LogTool.cpp
* Author: Jerry
*
* Created on 2017 8 8 , 2:25
*/
#include
#include "SingletonLogManager.h"
void testRecovery()
{
SingletonLogManager* pSingletonLogManager = SingletonLogManager::GetInstance();
pSingletonLogManager->print();
}
int main()
{
cout << "testRecovery begin !" << endl;
testRecovery();
cout << "testRecovery end !" << endl;
return 0;
}