Sep*_*ram 7 c++ singleton templates
它发生在我需要臭名昭着的单身人士模式.更好的是,它发生在我需要臭名昭着的C++模板与该模式相结合.那么,困扰我的是:
template <class T>
class PDatabaseTable
{
...
static PDatabaseTable <T> & instance()
{
static PDatabaseTable <T> singleton;
return singleton;
}
...
};
Run Code Online (Sandbox Code Playgroud)
这是实现应该在第一次使用时创建的单例的典型方法.现在,我们有一个静态变量单例.由于可以从几个不同的模块调用instance()函数,问题是:对于任何给定的类型T,对象只有一个实例,或者每个模块是否会实例化它自己的单例?
每种类型只有一个实例T,就像它不是模板一样,只有一个实例.
该功能是在线的,这意味着尽管它可以在多个编译单元中定义的,连接后会出现只有一个版本的话,只有一个地方的任何静态对象的实例.