C++单例模式的简单实现

c++单例模式的实现(一)

实现方法

1.将构造函数,析构函数私有化,这样保证在类外无法调用类的构造函数创建类的实例,只能通过类内部定义的方法进行创建;

2.在类内定义静态的,指向该类的指针变量ptr,负责保存创建的类的实例,并在类外部初始化为nullptr

3.在类内部定义静态的实例化对象的方法,以及对对象进行销毁的方法。构造函数中,如果ptrnullptr,则在堆空间上进行对象的创建,否则直接返回该指针;对象的销毁方法中,如果指针不为空,则进行析构,回收申请的堆空间。

代码如下:

class Singleton {
public:
    static Singleton* getInstance() {
        if(nullptr == ptr) {
            cout << "getInstance()" << endl;
            ptr = new Singleton() //调用构造函数对对象进行实例化
        }
        return ptr; //返回指向该对象的指针
    }
    
    static void destory() {
        if(ptr) {
            delete ptr; // 回收堆空间
            ptr = nullptr;  // 防止野指针
        }
    }
    
private:
    Singleton() { //构造函数
        cout << "Singleton()" << endl;
    }
    
    ~Singleton() { //析构函数
        cout << "~Singleton()" << endl;
    }
    static Singleton* ptr;  //指向该对象的指针
};

Singleton* Singleton::ptr = nullptr; //静态对象在类外进行初始化

猜你喜欢

转载自www.cnblogs.com/zhhz9706/p/12150142.html