zoukankan      html  css  js  c++  java
  • C++单例模式

          单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

    #include<iostream>
    #include<vector>
    #include<algorithm>
    using namespace std;
    ///自己写的单例模式,不知道对不对,应该是对的吧?
    class singleton{
    public:
        ~singleton();
        static singleton* createInstance();
        static void count(){Num = Num + 1;}
        void display(){cout<<"This is the rd:"<<singleton::Num<<endl;}
    private:
        singleton(){count();}
        static int Num;
    };
    
    int singleton::Num = 0;
    
    singleton* singleton::createInstance()
    {
        singleton * s = new singleton;
        return s;
    }
    
    int main()
    {
        singleton* s = singleton::createInstance();
        s->display();
    }

    自己的好像是错的,没有这个人写的完美

    class CSingleton
    {
    private:
        CSingleton()   //构造函数是私有的
        {
        }
        static CSingleton *m_pInstance;
    public:
        static CSingleton * GetInstance()
        {
            if(m_pInstance == NULL)  //判断是否第一次调用
                m_pInstance = new CSingleton();
            return m_pInstance;
        }
    };
    
    int main()
    {
       CSingleton* p1 = CSingleton :: GetInstance();
       CSingleton* p2 = p1->GetInstance();
       CSingleton & ref = * CSingleton :: GetInstance();
    }

    不过最好初始化一下,不然我担心会出现不是空值的情况

    只要加上CSingleton* CSingleton::m_pInstance = NULL;

  • 相关阅读:
    元组类型内置方法
    列表类型内置方法
    字符串类型内置方法
    转:【英语学习材料】
    转:【15年学不会英语的原因】
    转:【Java动态编程(Javassist研究)】
    转:【进制转换-概念】
    c语言学习笔记
    virtualbox虚拟机桥接方式网络设置
    navicat连接mysql8报错,错误提示为1251,原因及解决步骤
  • 原文地址:https://www.cnblogs.com/berkeleysong/p/3755353.html
Copyright © 2011-2022 走看看