C++ 单例模式实现:Single 类详解

本文将详细解析 C++ 中使用 Single 类实现单例模式的代码,并逐行解释代码逻辑。

class Single
{
public:
	static Single *getSingle() {
		if(nullptr == m_ptr) {
			// lock    //解决多线程安全问题
			// if(nullptr == ptr)
			m_ptr = new Single;
		}
		return m_ptr;
	}
	void show() {
		cout << 'show' << endl;
	}
	void destory()
	{
		delete m_ptr;	
	}
private:
	Single(const Single &obj) = delete;
	Single() {
		cout << 'Single' << endl;
	}
	~Single() {
		m_ptr = nullptr;
		cout << '~Single' << endl;
	}
	static Single *m_ptr;
};

代码解释

  • 第 1 行: 定义一个名为 Single 的类。
  • 第 4-14 行: 定义了一个名为 getSingle() 的静态成员函数,用于获取 Single 类的单例对象。
    • 如果 m_ptr 指针为空,则创建一个 Single 对象,并将其赋值给 m_ptr 指针,以保证只创建一个对象。
    • 最后返回 m_ptr 指针。
  • 第 15-17 行: 定义了一个名为 show() 的成员函数,用于输出字符串 'show'。
  • 第 19-22 行: 定义了一个名为 destory() 的成员函数,用于销毁 Single 类的单例对象。
    • 通过 delete 关键字释放 m_ptr 指针指向的内存,并将 m_ptr 指针置空。
  • 第 24-28 行: 定义了一个私有的构造函数 Single(const Single &obj),并使用 delete 关键字将其禁用,防止通过拷贝构造函数创建新的对象。
  • 第 29-32 行: 定义了一个私有的默认构造函数 Single(),用于创建 Single 类的单例对象。在构造函数中输出字符串 'Single'。
  • 第 33-36 行: 定义了一个私有的析构函数 ~Single(),用于销毁 Single 类的单例对象。在析构函数中将 m_ptr 指针置空,并输出字符串 '~Single'。
  • 第 38 行: 定义了一个静态的 Single 指针 m_ptr,用于指向 Single 类的单例对象。初始值为 nullptr。

总结

这段代码使用 Single 类实现了单例模式,通过以下关键点来保证只有一个实例:

  • 私有构造函数: 防止直接创建对象。
  • 静态成员函数: 提供获取单例对象的唯一入口。
  • 静态成员变量: 存储单例对象指针。

单例模式的优点在于可以保证全局唯一性,避免重复创建相同对象,节省资源。同时,它也方便对对象的管理和控制。

需要注意的是,在多线程环境中,需要使用锁机制来保证线程安全,避免多个线程同时创建对象导致错误。

希望本文对您理解 C++ 单例模式和 Single 类代码有所帮助。

C++ 单例模式实现:Single 类详解

原文地址: https://www.cveoy.top/t/topic/qxX5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录