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;

  • 相关阅读:
    wss的webpart的3种开发方式(转载)
    C# 2.0学习之集合2
    对C#中的TreeView添加背景图转载
    ASP.NET 2.0: 页面中链入的CSS、js文件带中文时需注意
    C# 2.0学习之泛型
    C# 2.0学习之数组
    连接 ACCESS 2007
    C# 2.0学习之事件2
    一个P2P+搜索音乐网站的策划书(转载)
    关于MOSS的应用和开发的一些联接
  • 原文地址:https://www.cnblogs.com/berkeleysong/p/3755353.html
Copyright © 2011-2022 走看看