【C++ 单例模式】

正确的析构 静态实例和回收类
SingletonMode.cpp

#include <iostream>

class Singleton
{
   
  private:
    Singleton(){
   
        std::cout << "构造" << std::endl;
    };
    ~Singleton()
    {
   
        std::cout << "析构" << std::endl;
    }

  public:
    static Singleton *getInstance()
    {
   
        static Singleton local_instance;
        return &local_instance;
    }

};


class SingletonPattern
{
   

private:
	SingletonPattern()
    {
   
        std::cout << "创建单例模式对象!\n";
    }
	~SingletonPattern()
    {
   

    }
private:
	static SingletonPattern* m_Instance;

public:
	static SingletonPattern* GetInstance()
    {
   
        if (m_Instance == nullptr) 
        {
   
            m_Instance = new SingletonPattern();
        }
        std::cout << "返回单例模式句柄!\n";
        return m_Instance;
    }

	void display()
    {
   
        std::cout << "使用单例模式!\n" ;
    }
private:
	class CGabor
	{
   
	public:
		~CGabor(){
   
			if (SingletonPattern::m_Instance){
   
				delete SingletonPattern::m_Instance;
				SingletonPattern::m_Instance = NULL;
                std::cout << "SingletonPattern 析构" << std::endl;
			}
		}
	};
	static CGabor m_Gabor;
};

SingletonPattern* SingletonPattern:: m_Instance = nullptr;
SingletonPattern::CGabor SingletonPattern::m_Gabor;

// g++ SingletonMode.cpp -o SingletonMode -std=c++11
int main()
{
   
    Singleton *a = Singleton::getInstance();
    Singleton *b = Singleton::getInstance();
    if(a==b){
   
        std::cout<< "a==b" <<'\n';
    }
    SingletonPattern* m_Test = SingletonPattern::GetInstance();
	m_Test->display();
    return 0;
}

相关推荐

  1. 模式C#】

    2023-12-30 09:46:02       37 阅读
  2. 模式C++)

    2023-12-30 09:46:02       33 阅读
  3. C++ 模式

    2023-12-30 09:46:02       40 阅读
  4. C++ 模式

    2023-12-30 09:46:02       33 阅读
  5. C# 模式

    2023-12-30 09:46:02       19 阅读
  6. C++模式

    2023-12-30 09:46:02       8 阅读
  7. c++ 模式

    2023-12-30 09:46:02       6 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-30 09:46:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-30 09:46:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-30 09:46:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-30 09:46:02       20 阅读

热门阅读

  1. TCP/UDP协议

    2023-12-30 09:46:02       36 阅读
  2. 百度地图再vue中的引入方式

    2023-12-30 09:46:02       44 阅读
  3. 《基于 Vue 组件库 的 Webpack5 配置》- 总结

    2023-12-30 09:46:02       36 阅读
  4. FreeRTOS学习--61讲 内存管理

    2023-12-30 09:46:02       36 阅读
  5. 【蓝桥杯】比赛大纲整理

    2023-12-30 09:46:02       31 阅读