• C++ 34 之 单例模式


    1. #include
    2. #include
    3. using namespace std;
    4. class King{
    5. // 公共的函数,为了让外部可以获取唯一的实例
    6. public:
    7. // getInstance 获取单例 约定俗成
    8. static King* getInstance(){
    9. return true_king;
    10. }
    11. private: // 私有化
    12. // 构造函数设置为私有,无法直接从外部创建类的对象
    13. // 只能在类内进行调用
    14. King(){
    15. // 在main函数执行之前,先打印一句话
    16. cout << "我什么时候打印阿" << endl;
    17. }
    18. //默认的拷贝构造函数要覆盖重写,让它变成私有的,就可以把这个漏洞补上了
    19. King(const King& k){
    20. }
    21. // 静态成员会最优先执行(在main之前执行)
    22. // 私有的静态指针,用于存储类的唯一实例
    23. static King* true_king; // 静态成员:类内声明,类外部初始化
    24. };
    25. // 类外初始化静态成员
    26. King* King::true_king = new King;
    27. int main()
    28. {
    29. // King k1;
    30. // King* k2 = new King; 构造函数设置为私有,无法直接从外部创建类的对象
    31. King* k1 = King::getInstance();
    32. King* k2 = King::getInstance();
    33. //默认的拷贝构造函数要覆盖重写,让它变成私有的,就可以把这个漏洞补上了
    34. // King* k3 = new King(*k1);
    35. if(k1 == k2)
    36. {
    37. cout << "k1 = k2" << endl;
    38. }
    39. else{
    40. cout << "k1 != k2"<< endl;
    41. }
    42. // 当执行完 King* k3 = new King(*k1);之后,相当于有了一个k3,
    43. // if(k1 == k3)
    44. // {
    45. // cout << "k1 = k3" << endl;
    46. // }
    47. // else{// k1和k3不相等,不符合单例模式了
    48. // cout << "k1 != k3";
    49. // }
    50. cout << "我是main的" << endl;
    51. return 0;
    52. }

     单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

  • 相关阅读:
    CSP-J 2023 入门级 第一轮 阅读程序(3)
    5.Vue-在Vue框架中实现Vue的增删改查
    java 泛型返回
    阿里云易立:以增效促降本,容器服务全面进入智能化时代
    【战斗吧,青春!】
    热线系统自主可控改造:构建安全、高效的服务新纪元
    高通导航器软件开发包使用指南(11)
    数据结构与算法复习:第三十五弹
    二叉树操作题
    详细讲解原生js拖拽
  • 原文地址:https://blog.csdn.net/LSG_Down/article/details/139678304