考虑以下代码
class Foo {
public:
static Foo *create() {
/*if (!_pInstance)
_pInstance = new Foo();*/
return _pInstance;
}
void print() {
cout << "Hi there "<<this << endl;
}
private:
static Foo *_pInstance;
Foo() = default;
//~Foo() = default;
};
Foo *Foo::_pInstance = nullptr;
int main()
{
Foo *obj1 = Foo::create();
obj1->print();
delete obj1;
obj1->print();
system("PAUSE");
return 0;
}
我正在研究单例设计模式,但是我面对静态对象的陌生世界。
此代码输出为:
Hi there 00000000
Hi there 00000000
为什么?如何删除该对象?我想要一种导致该程序崩溃的解决方案。