单例模式

以下是单例模式的一种实现

1 class BootLoader{
2 public:
3     static BootLoader* instance(){
4         static BootLoader bl;
5         return &bl;
6     }
7 private:
8         BootLoader(){}
9 };          

通过BootLoader::instance()实现类只存在唯一实例,每次访问类中的数据成员时调用instance()函数即可,下面分析以下这种实现单例模式的原理

1. 构造函数位私有,外部无法访问,通过类的静态函数instance()可以实现创建对象

2 . 在instance()函数中定义了局部 静态对象,静态对象存储区变更到全局区中,对象中的数据成员一直有效知道程序结束

3. 为什么每次调用instance()函数时没有多次创建局部 静态变量,因为静态对象的缘故,每次instance函数执行到此处时先检查对象是否已经存在,存在即直接返回,不存在创建后返回

static对象如果出现在类中,那么该对象即使从未被使用到,它也会被构造以及析构。而函数中的static对象,如果该函数从未被调用,这个对象也就绝不会诞生,但是在函数每次被调用时检查对象是否需要诞生。

原文地址:https://www.cnblogs.com/yulei0713/p/11327907.html