单例模式

看单例模式的例子:
C/C++ code
   
   
#include < iostream > class Singleton{ private : Singleton( int i = 0 ):val(i){ // 构造函数私有 std::cout << " constructor,member val = " << val << std::endl; } int val; static Singleton * ins; public : static Singleton * instance(){ // 工厂方法 return ins; } int getVal(){ return val; } void setVal( int i){ val = i; } virtual ~ Singleton(){ if (ins){ delete ins; std::cout << " destructor " << std::endl; } } }; Singleton * Singleton::ins = new Singleton( 10 ); int main(){ Singleton * clienta = Singleton::instance(); Singleton * clientb = Singleton::instance(); std::cout << " adress clienta: " << clienta << std::endl; std::cout << " adress clientb: " << clientb << std::endl; return 0 ; }

  运行结果:
Perl code
 
 $ g++ -Wall singleton.cpp -o singleton 
 $ ./singleton 
 constructor,member val = 10 
 adress clienta: 0x804a008 
 adress clientb: 0x804a008 
 

  可见调用两次instance()只调用了一次构造函数,只产生了一个对象,指针clienta和clientb存储的是同一个对象的地址。这就是单例模式,通过将类的构造函数设为private,保证只能有一个对象存在。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值