(转载请注明原创于潘多拉盒子)
C++的模板可以帮助我们编写适合不同类型的模板类,给代码的复用性提供了极大的方便。近来写了一个涉及单例的C++模板类,简化下来可以归结为以下的代码:
template <typename T>
class Singleton
{
public:
// 此处省去了多线程安全锁
static T* getInstance()
{
static T t;
return &t;
}
};
那么如果希望对某个work horse类,比如叫做Foo,定义一个Singleton,就会很容易啦:
Foo* foo = Singleton<Foo>::getInstance();
注意这里不需要自己释放foo,因为它不是new出来的。
如果代码被编译成“一个”so(dll)或可执行文件,这里的Singleton得到的对象却是是单例的,也就是说,某一种类型得到的对象地址是确定的。
但是,如果同一个类型的