欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > C++ 34 之 单例模式

C++ 34 之 单例模式

2025/9/20 11:49:16 来源:https://blog.csdn.net/LSG_Down/article/details/139678304  浏览:    关键词:C++ 34 之 单例模式
#include <iostream>
#include <string.h>
using namespace std;class King{// 公共的函数,为了让外部可以获取唯一的实例
public:// getInstance 获取单例 约定俗成static King* getInstance(){return true_king;}private: // 私有化// 构造函数设置为私有,无法直接从外部创建类的对象// 只能在类内进行调用King(){// 在main函数执行之前,先打印一句话cout << "我什么时候打印阿" << endl;}//默认的拷贝构造函数要覆盖重写,让它变成私有的,就可以把这个漏洞补上了King(const King& k){}// 静态成员会最优先执行(在main之前执行)// 私有的静态指针,用于存储类的唯一实例static King* true_king;    // 静态成员:类内声明,类外部初始化};// 类外初始化静态成员
King* King::true_king = new King;int main()
{// King k1;// King* k2 = new King;   构造函数设置为私有,无法直接从外部创建类的对象King* k1 = King::getInstance();King* k2 = King::getInstance();//默认的拷贝构造函数要覆盖重写,让它变成私有的,就可以把这个漏洞补上了// King* k3 = new King(*k1);if(k1 == k2){cout << "k1 = k2" << endl;}else{cout << "k1 != k2"<< endl;}// 当执行完 King* k3 = new King(*k1);之后,相当于有了一个k3,// if(k1 == k3)// {//     cout << "k1 = k3" << endl;// }// else{// k1和k3不相等,不符合单例模式了//     cout << "k1 != k3";// }cout << "我是main的" << endl;return 0;
}

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词