【发布时间】:2014-03-03 14:00:42
【问题描述】:
在此示例中,我希望实例每次都重新初始化为 NULL。因此,它不应该起作用,它应该每次都做新的。但是,它实际上是作为单例工作的。因此,new 只被调用一次。为什么它有效?我在这里很困惑。
class Factory_model
{
public:
static Factory_model* Instance(void);
};
Factory_model* Factory_model::Instance(void)
{
static Factory_model* instance = NULL;
if(instance == NULL)
{
qDebug()<< "Creating instance now"<<endl;
instance = new Factory_model;
}
return(instance);
}
int main(int argc, char *argv[])
{
Factory_model *ptr = Factory_model::Instance();
Factory_model *ptr2 = Factory_model::Instance();
Factory_model *ptr3 = Factory_model::Instance();
}
输出如下 - 立即创建实例
【问题讨论】:
-
注意
static Factory_model* instance = NULL;和static Factory_model* instance; instance = NULL;之间的区别。
标签: c++