C++ 单例模式实现:Single 类详解
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 类代码有所帮助。
原文地址: https://www.cveoy.top/t/topic/qxX5 著作权归作者所有。请勿转载和采集!