getInstance()的用法

 

GetInstance()的用法

      在写程序库代码时,有时有一个类需要被所有的其它类使用,但又要求这个类只能实例化一次,是个服务类,定义一次,其它类使用同一个这个类的实例。

例如:

class A

{

public:

       A(void);

…..

}

如果在每一个需要A的类中都声明一个A类的对象,那么会导致有N个类,每A类的定义都不一样,但是这个A类是服务类,只能定义一次,定义多个N类会导致不同的内存地址。

解决这个矛盾的方法:

1.      定义一个A的全局类对象,其它类共同使用这个实例化对象,这样保证A只实例化一次,使用extern A a声明一次,在源文件中定义A a即可;

但这种方式有一个问题,就是工程之间的访问,例如pro1中有A类,pro2需要使用A类,这样就不能完全保证A类只实例化一次,可能会出现pro1和pro2各实例化一次。

2.      定义静态的实例化类(Singleton),如下:

class A

{

public:

A(void);

static A* GetInstance()

{

static A* a = NULL;

if(!a)

{

 a = new A;

};

return a;

}

……

}

 

这样只要包含这个头文件,

A::GetInstance()->…..

这样就保证只实例化一次。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值