zoukankan      html  css  js  c++  java
  • 我的单例模式(C++)

    单例模式类文件 Single.h Single.cpp

    //Single.h
     
    #pragma once
    #include <iostream>
    using namespace std;
     
    class SingleClass
    {
    private:
        SingleClass();
    public:
        static SingleClass* GetInstance()
        {
            if (instance == NULL)
            {
                instance = new SingleClass();
            }
     
            return instance;
        }
    private:
        static SingleClass *instance;
     
        class GcWorker
        {
            ~GcWorker();
        };
        static GcWorker worker;
    //以上是单例模式,下面是方法和属性
    public:
        void PrintAdd(int a,int b);
        void PrintSub(int a,int b);
    };
     
    //Single.cpp
     
    #include "Single.h"
     
    SingleClass* SingleClass::instance = NULL;
     
    SingleClass::SingleClass()
    {
        //初始化及一些状态
    }
     
    void SingleClass::PrintAdd( int a,int b )
    {
        cout<<"a + b = "<<a+b<<endl;
    }
     
    void SingleClass::PrintSub( int a,int b )
    {
        cout<<"a - b = "<<a-b<<endl;
    }
    SingleClass::GcWorker::~GcWorker()
    {
        if (SingleClass::instance != NULL)
        {
            delete SingleClass::instance;
            SingleClass::instance = NULL;
        }
    }

    客户端调用测试:

    #include "Single.h"
     
    int main()
    {
        SingleClass::GetInstance()->PrintAdd(2,5);
        SingleClass::GetInstance()->PrintSub(5,2);
        cout<<endl<<"Over!"<<endl;
    }

    结果:

    image

  • 相关阅读:
    ES6-->ECMAScript 6.0 新增方法,一些基本语法
    初识 Nodejs (了解Nodejs)
    Vue框架初识
    python语法入门之流程控制
    python中基本运算符
    格式化输出
    基本数据类型
    变量,解释器,垃圾回收机制,小整数池总结
    编程语言发展史
    计算机基础
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/1992977.html
Copyright © 2011-2022 走看看