C++ 单例模式实现详解 - 完整代码及逐行注释
#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
// 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。
原文地址: https://www.cveoy.top/t/topic/qxYE 著作权归作者所有。请勿转载和采集!