单件类
之前腾讯实习生面试之行中面试官曾问过这个问题,不过他上来之后先问的是:你知不知道单件类?
然后我摇了摇头:不知道。
刚才在看C++ primer plus的时候,还真的看到了C++中单件类的实现。
其实方法也还是挺简单的:
目的很简单,就会要一个类只能创建一个实例,也就是只有一个对象。
我之前的想法是在类中添加一个静态成员来计数,然后呢,通过计数来控制对象的创建。
但是,我现在想想,觉得这个想法还真的是挺幼稚的。
用了静态成员,第一次对计数的查看是在什么地方?构造函数。
但是很明显的是,构造函数创建的时候,这个对象已经生成了。也许可以把这个类的内部数据全部都变成无效值,但是终究还是创建了两个对象。
书上提供了一种很好的方法,具体如下:
将构造函数创建为保护成员函数。
在类中创建一个静态公有成员函数,这个成员函数的操作是创建一个静态对象,然后将对象地址返回。
over
就这么简单。
作为成员函数,是有权限去调用具有保护属性构造函数的。
同时,创建这个单件类的唯一方法就是只能调用这个公有成员函数,获得这个对象的指针。
而因为其返回地址是一个静态成员函数内部静态变量的地址,所以始终都只有一个对象被创建~
太巧秒了有没有啊?