单件类

之前腾讯实习生面试之行中面试官曾问过这个问题,不过他上来之后先问的是:你知不知道单件类?

然后我摇了摇头:不知道。

刚才在看C++ primer plus的时候,还真的看到了C++中单件类的实现。

其实方法也还是挺简单的:

目的很简单,就会要一个类只能创建一个实例,也就是只有一个对象。

我之前的想法是在类中添加一个静态成员来计数,然后呢,通过计数来控制对象的创建。

但是,我现在想想,觉得这个想法还真的是挺幼稚的。

用了静态成员,第一次对计数的查看是在什么地方?构造函数。

但是很明显的是,构造函数创建的时候,这个对象已经生成了。也许可以把这个类的内部数据全部都变成无效值,但是终究还是创建了两个对象。

书上提供了一种很好的方法,具体如下:

将构造函数创建为保护成员函数。

在类中创建一个静态公有成员函数,这个成员函数的操作是创建一个静态对象,然后将对象地址返回。

over

就这么简单。

作为成员函数,是有权限去调用具有保护属性构造函数的。

同时,创建这个单件类的唯一方法就是只能调用这个公有成员函数,获得这个对象的指针。

而因为其返回地址是一个静态成员函数内部静态变量的地址,所以始终都只有一个对象被创建~

太巧秒了有没有啊?

 

posted @ 2013-06-16 10:21  Matrix_R  阅读(402)  评论(1编辑  收藏  举报