将构造函数设为私有,用静态函数初始化和返回全局唯一的实例。
class one
{
private:
static one* _o;
int _i;
one():_i(0){}
~one(){}
public:
static one* get() {if(!_o)_o = new one; return _o;}
void add(){_i++;}
void pnt(){cout << _i << endl;}
};
one* one::_o = NULL;
int main()
{
one* o1 = one::get();
for(int i=0; ++i<100; o1->add());
o1->pnt();
one* o2 = one::get();
o2->pnt();
return 0;
}
单件模式在子进程见也是唯一的。
int main()
{
one* o1 = one::get();
o1->add();
o1->add();
if(fork() == 0)
{
one* o2 = one::get();
printf("o2: %x\n", o2);
o2->pnt();
exit(0);
}
printf("o1: %x\n", o1);
o1->pnt();
return 0;
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26239116/viewspace-2123700/
,如需转载,请注明出处,否则将追究法律责任。