标签:ptr class 否则 模式 无法 null 上进 静态 私有
1.将构造函数,析构函数私有化,这样保证在类外无法调用类的构造函数创建类的实例,只能通过类内部定义的方法进行创建;
2.在类内定义静态的,指向该类的指针变量ptr
,负责保存创建的类的实例,并在类外部初始化为nullptr
;
3.在类内部定义静态的实例化对象的方法,以及对对象进行销毁的方法。构造函数中,如果ptr
为nullptr
,则在堆空间上进行对象的创建,否则直接返回该指针;对象的销毁方法中,如果指针不为空,则进行析构,回收申请的堆空间。
代码如下:
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; //静态对象在类外进行初始化
标签:ptr class 否则 模式 无法 null 上进 静态 私有
原文地址:https://www.cnblogs.com/zhhz9706/p/12150142.html