网站建设投标书模板,比百度好用的搜索软件,英语做课后作业的网站,做网站开发的有哪些公司好1. basic
1.1 什么是单例模式
保证⼀个类仅有⼀个实例#xff0c;并提供⼀个访问它的全局访问点。
1.2 分类
两种#xff1a;
饿汉模式#xff1a;饿了就饥不择⻝了#xff0c;所以在单例类定义的时候就进⾏实例化。懒汉模式#xff1a;顾名思义#xff0c;不到万不…1. basic
1.1 什么是单例模式
保证⼀个类仅有⼀个实例并提供⼀个访问它的全局访问点。
1.2 分类
两种
饿汉模式饿了就饥不择⻝了所以在单例类定义的时候就进⾏实例化。懒汉模式顾名思义不到万不得已就不会去实例化类也就是在第⼀次⽤到的类实例的时候才会去实例化即在单例类第⼀次被引⽤的时候就将⾃⼰初始化C 很多地⽅都有类型的思想⽐如写时拷⻉晚绑定等。
2. 实例详解
2.1 饿汉模式
在最开始的时候静态对象就已经创建完成设计⽅法是类中包含⼀个静态成员指针该指针指向该类的⼀个对象提供⼀个公有的静态成员⽅法返回该对象指针为了使得对象唯⼀构造函数删除。
饿汉模式主要利用 C11 静态成员变量的初始化是在第一次访问时由编译器自动完成这个过程是原子操作不会被多线程打断的特性来保证包含了饿汉模式的程序在运行时是线程安全的。
#include iostream
using namespace std;class SingleInstance
{
public:static SingleInstance* GetInstance(){static SingleInstance ins; //静态局部变量在第一次调用时初始化C 11 下时时线程安全的 //C11 静态成员变量的初始化是在第一次访问时由编译器自动完成这个过程是原子操作不会被多线程打断return ins;}~SingleInstance() {};void CoutSomething(){cout 单例模式--饿汉--coutsomething endl;}private:SingleInstance(){cout 单例模式--饿汉 endl;}SingleInstance(const SingleInstance copy) delete; //禁止拷贝构造SingleInstance operator(const SingleInstance) delete; //禁止赋值操作。
};int main(int argc,char ** argv)
{SingleInstance* ins SingleInstance::GetInstance();ins-CoutSomething();return 0;
}2.2 懒汉模式
本身不时线程安全的要想实现线程安全需要加锁。 代码详见gitee