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;

原文地址:https://www.cnblogs.com/berkeleysong/p/3755353.html