目录
1.提出的需求
2.如何定义一个类,使得这个类最多只能创建一个对象?
3.代码
4.小结
C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂
1.提出的需求
在架构设计时,某些类在整个系统生命期中最多只能有一个对象存在( Single Instance)。
2.如何定义一个类,使得这个类最多只能创建一个对象?
要控制类的对象数目,必须对外隐藏构造函数
思路
- 将构造函数的访问属性设置为 private
- 定义instance 并初始化为 NULL
- 当需要使用对象时,访问instance 的值
空值:创建对象,并用instance 标记
非空值: 返回instance 标记的对象
3.代码
#include <iostream>
#include <string>
using namespace std;
class SObject
{
    static SObject* c_instance;
    
    //1.将构造函数的访问属性设置为 private
    //拷贝构造声明成私有不使用
SObject(const SObject&);
    //声明成私有不使用
    SObject& operator= (const SObject&);
    
    //声明成私有不使用
    SObject()
    {
    }
public:
    static SObject* GetInstance();
    
    void print()
    {
        cout << "this = " << this << endl;
    }
};
//静态成员变量类外初始化
//定义instance 并初始化为 NULL
SObject* SObject::c_instance = NULL;
//静态成员函数类外初始化
SObject* SObject::GetInstance()
{
    //当需要使用对象时,访问instance 的值
    //空值:创建对象,并用instance 标记
    //非空值: 返回instance 标记的对象
    if( c_instance == NULL )
    {
        c_instance = new SObject();
    }
    
    return c_instance;
}
int main()
{
    SObject* s = SObject::GetInstance();
    SObject* s1 = SObject::GetInstance();
    SObject* s2 = SObject::GetInstance();
    
    //唯一对象
    s->print();
    s1->print();
    s2->print();
    
    return 0;
}
4.小结
单例模式是开发中最常用的设计模式之一
单例模式的应用使得一个类最多只有一个对象






![[数据结构]:11-冒泡排序(顺序表指针实现形式)(C语言实现)](https://img-blog.csdnimg.cn/9a0b1e469dff4f719c25b877328e7925.png)












