类实例化就会占用内存,浪费资源,效率高,不存在线程安全问题。
class singleton{ singleton() { } static singleton* m_instance_ptr;public: static singleton* get_instance() { return m_instance_ptr;}};singleton* singleton::m_instance_ptr = new singleton();int main(){ singleton* instance1 = singleton::get_instance(); singleton* instance2 = singleton::get_instance(); return 0;}
延迟加载,节省资源,效率低,存在线程安全问题。
class singleton { singleton() { } static singleton* m_instance_ptr;pu教师成长规划blic: static singleton* get_instance() { if(m_instance_ptr == nullptr)m_instance_ptr = new singleton(); return m_instance_ptr; }};singleton* singleton::m_instance_ptr = nullptr;i报名号nt main(){ singleton* instance1 = singleton::get_instance(); singleton* instance2 = singleton::get_instance(); return 0;}
线程安全(锁)+ 内存回收(智能指针)
#include <iostream>#include <memory>#include <mutex>class singleton {public:typedef std::shared_ptr<singleton> ptr; static ptr get_instance() { if(m_instance_ptr == nullptr) { std::lock_guard<std::mutex> lk(m_mutex); if(m_instance_ptr == nullptr)m_instance_ptr = std::shared_ptr<singleton>(new singleton); } return m_instance_ptr; }private:singleton() {} static ptr m_instance_ptr; static std::mutex m七夕情人节祝福语大全_mutex;};singleton::ptr singleton::m_instance_ptr = nullptr;std::mutex singleton::m_mutex;int main(){ singleton::ptr instance1 = singleton::get_instance(); singleton::ptr instance2 = singleton::get_instance(话术销售技巧); return 0;}
class singleton {public: singleton(const singleton&)=delete; static singleton& get_instance() { static singleton instance; return instance; }private: singleton() {}};int main() {singleton& instance1 = singleton::get_instance(); singleton& instance2 = singleton::get_instance(); return 0;}
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注www.887551.com的更多内容!
本文发布于:2023-04-04 03:39:28,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/f7fd08fde73ab81d468be2bad6dcef04.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C++实现单例模式的方法.doc
本文 PDF 下载地址:C++实现单例模式的方法.pdf
留言与评论(共有 0 条评论) |