单例模式

    xiaoxiao2021-04-14  64

    //只有一个实例,所以我们不能把构造函数借口暴露给用户(否则用户可以创建很多个)。//所以采用一个静态成员函数static Singleton* getInstance();来获取实例 //单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例 #include <stdio.h> #include <iostream> using std::cout; using std::endl; //要求:在内存之中只能创建一个对象 //1. 该对象不能是全局对象或者栈对象 //2. 只能是堆对象 //作用: // 在一定程序上,它是可以取代全局变量 class Singleton { public: static Singleton * getInstance()  { //所以采用一个静态成员函数static Singleton* getInstance();来获取实例 if(_pInstance == NULL) { _pInstance = new Singleton; } return _pInstance; } static void destroy() { if(_pInstance) delete _pInstance; } private: Singleton(){ cout << "Singleton()" << endl; } ~Singleton(){ cout << "~Singleton()" << endl; } private: static Singleton * _pInstance;//用来保存第一次new的指针,,为了使p1,p2相同,所有还需要一个static }; Singleton * Singleton::_pInstance = NULL; //Singleton s3; int main(void) { // Singleton s1;//Error, 它会调用默认构造函数 // Singleton s2;//通过语法规则让改语句无法编译通过,把它放在private区域 Singleton * p1 = Singleton::getInstance(); Singleton * p2 = Singleton::getInstance(); Singleton * p3 = Singleton::getInstance(); printf("p1 = %p\n", p1); printf("p2 = %p\n", p2); printf("p3 = %p\n", p3); //delete p1;//Error通过语法规则让语句无法编译通过 Singleton::destroy(); return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-670179.html

    最新回复(0)