设计模式之-单例模式学习

xiaoxiao2021-02-28  104

C++实现,VS2105编译环境,单例模式头文件声明如下:

#pragma once class SingletonClass { private: SingletonClass(); // 将析构函数设为私有可以解决被赋值的问题 ~SingletonClass(); public: static SingletonClass* GetInstance(); private: static SingletonClass *Instance; }; 实现代码如下: #include "SingletonClass.h" //在STATIC区初始化可以解决多线程访问的问题 SingletonClass* SingletonClass::Instance = new SingletonClass(); SingletonClass::SingletonClass() { } SingletonClass::~SingletonClass() { } SingletonClass* SingletonClass::GetInstance() { /* if (nullptr == Instance) { Instance = new SingletonClass(); } */ return Instance; } 测试代码: #include "SingletonClass.h" #include <iostream> using namespace std; int main() { SingletonClass* instance1 = SingletonClass::GetInstance(); SingletonClass* instance2 = SingletonClass::GetInstance(); if (instance1 == instance2) { cout << "it is equal" << endl; } system("pause"); return 0; }所谓懒汉模式,没有锁可以多线程访问,空间被提前的分配。

转载请注明原文地址: https://www.6miu.com/read-58327.html

最新回复(0)