C++-(19)-单例模式

单例模式:一个系统中的一个类对象实例唯一存在。
特点: 1.类构造函数为私有的。
            2.静态的指向本身的指针。
            3.析构函数为共有的
            4.静态的获取对象指针函数
1.Container.h

//Container.h
class Recyc{
  public:Recyc();
    ~Recyc();
};
class Container
{
    //构造函数私有
    private:
      Container();    
      classA *m_classA;
      classB *m_classB;
     
public:
    static Container *m_instance;//静态的指向本身的指针
     ~Container();                //公有的析构函数
    classA *GetclassAInstance() const;
    classB *GetclassBInstance() const;
    static Container *GetInstance();//被外界调用,获取对象指针函数
};

2.Container.cpp

//Container.cpp
//初始化指针
//程序退出时会自动调用这个对象的析构函数
static Recyc recyc;
Container* Container::m_instance=NULL;
Recyc::Recyc(){}
Recyc::~Recyc()
{
    Container *con=Container::GetInstance();
    if(con!=NULL)
    {
        delete con;
    }
}
//构造函数初始化
Container::Container()
:m_classA(NULL),
m_classB(NULL)
{
    m_classA=new classA;
    m_classB=new classB;
   
}
//析构函数
Container::~Container()
{
    if(m_classA!=NULL)
    {
        delete m_classA;
    }
     if(m_classB!=NULL)
    {
        delete m_classB;
    }
 }
//得到实例的函数
Container *Container::GetInstace()
{
    //new 只会执行一次
    if(NULL==m_instance)
    {
        m_instance=new Container;
    }
    return m_instance;
}
//
classA *GetclassAInstance() const
{
    return m_classA;
}
Ultrasonic *GetclassBInstance() const
{
    return m_classB;
}

3.main函数调用
 

int main()
{
    Init();
    Container* con;
    classA * pclassA;
    con=Container::GetInstace();     //静态成员函数
    
    //获取类的数据
    pclassA=con->GetClassAInstance();  //获取数据
    pclassA->m_coporation="muc";         //
    pclassB=con->GetClassBInstance();        //
   
    
}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值