#include

using namespace std;

class Single { public: static Single *getSingle() {//定义了一个名为getSingle()的静态成员函数,用于获取Single类的单例对象 if(nullptr == m_ptr) { // lock //瑙e喅澶氱嚎绋嬪畨鍏ㄩ棶棰? // if(nullptr == ptr) m_ptr = new Single;//如果m_ptr指针为空,则创建一个Single对象,并将其赋值给m_ptr指针,以保证只创建一个对象。最后返回m_ptr指针。 } return m_ptr; } void show() { cout << 'show' << endl; } void destory()//用于销毁Single类的单例对象。通过delete关键字释放m_ptr指针指向的内存,并将m_ptr指针置空。 { delete m_ptr; } private: Single(const Single &obj) = delete;//定义了一个私有的构造函数Single(const Single &obj),并使用delete关键字将其禁用,防止通过拷贝构造函数创建新的对象 Single() {//创建 cout << 'Single' << endl; } ~Single() {//销毁 m_ptr = nullptr;//置空 cout << '~Single' << endl; } static Single *m_ptr;//定义了一个静态的Single指针m_ptr,用于指向Single类的单例对象。初始值为nullptr };

Single *Single::m_ptr = nullptr;

// 以下是对代码的逐行解释:

// 1. #include : 包含iostream库,用于输入输出操作。

// 2. using namespace std: 使用标准命名空间std,避免在代码中需要加上std::前缀。

// 3. class Single: 声明了一个名为Single的类。

// 4. static Single *getSingle(): 定义了一个静态成员函数getSingle(),用于获取Single类的单例对象。

// 5. if(nullptr == m_ptr): 判断m_ptr指针是否为空。

// 6. m_ptr = new Single: 如果m_ptr指针为空,则创建一个Single对象,并将其赋值给m_ptr指针。

// 7. return m_ptr: 返回m_ptr指针。

// 8. void show(): 定义了一个成员函数show(),用于输出字符串'show'。

// 9. cout << 'show' << endl: 输出字符串'show'。

// 10. void destory(): 定义了一个成员函数destory(),用于销毁Single类的单例对象。

// 11. delete m_ptr: 通过delete关键字释放m_ptr指针指向的内存。

// 12. Single(const Single &obj) = delete: 定义了一个私有的拷贝构造函数,并使用delete关键字将其禁用,防止通过拷贝构造函数创建新的对象。

// 13. Single(): 定义了一个无参构造函数。

// 14. cout << 'Single' << endl: 输出字符串'Single'。

// 15. ~Single(): 定义了一个析构函数。

// 16. m_ptr = nullptr: 将m_ptr指针置空。

// 17. cout << '~Single' << endl: 输出字符串'~Single'。

// 18. static Single *m_ptr: 定义了一个静态的Single指针m_ptr,用于指向Single类的单例对象。初始值为nullptr。

C++ 单例模式实现详解 - 完整代码及逐行注释

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

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