namespace DIS { #pragma region 创建、销毁实例 /// <summary> /// 单一实例 /// </summary> Dispensation* Dispensation::m_pInstance = NULL; Dispensation* _stdcall Dispensation::getInstance(void) { if (m_pInstance == 0) { m_pInstance = new DispensationImpl(); } return m_pInstance; } /// <summary> /// 销毁实例 /// </summary> void DispensationImpl::dispose(void) { if (m_pInstance != 0) { delete m_pInstance; m_pInstance = 0; } }
时间: 2023-12-31 12:03:55 浏览: 134
LabWindows/CVI 生成DLL及调用所生成的DLL
这段代码是一个命名空间 `DIS` 下的类 `Dispensation` 的实现。该类实现了创建和销毁单例对象的功能。
1. 首先定义了一个静态成员指针 `m_pInstance`,用于保存单例对象的指针,并初始化为 `NULL`。
2. `Dispensation* _stdcall Dispensation::getInstance(void)` 是一个静态成员函数,用于获取单例对象的实例。它的实现如下:
- 首先判断 `m_pInstance` 是否为 `NULL`,如果是,则说明还没有创建单例对象。
- 在这种情况下,通过 `new` 运算符创建一个 `DispensationImpl` 类的对象,并将其赋值给 `m_pInstance`。
- 最后,返回 `m_pInstance`。
3. `void DispensationImpl::dispose(void)` 是一个成员函数,用于销毁单例对象。它的实现如下:
- 首先判断 `m_pInstance` 是否不为 `NULL`,如果不为 `NULL`,说明已经创建了单例对象。
- 在这种情况下,通过 `delete` 运算符释放 `m_pInstance` 指向的内存,并将 `m_pInstance` 设置为 `NULL`。
需要注意的是,这段代码中的单例模式实现采用了懒汉式的方式,在第一次调用 `getInstance` 方法时才创建单例对象。同时,在销毁实例时需要手动调用 `dispose` 方法进行释放。
阅读全文