Singleton Template
proto version
class Single_Obj{
private:
Single_Obj(){
DEBUG_LINE_("Single_Obj(): {address: ", (void *)this, "}", ED_);}
static Single_Obj * obj;
public:
~Single_Obj(){
DEBUG_LINE_("~Single_Obj(): {address: ", (void *)this, "}", ED_);} ' 析构函数, 永远都必须是 public'
static Single_Obj * get_obj();
};
Single_Obj * Single_Obj::obj = nullptr;
Single_Obj * Single_Obj::get_obj(){
if( obj == nullptr){
obj = new Single_Obj;
}
return obj;
}
这是最经典的 单例版本;
但是, 其实他是会 泄漏内存的!!!
auto ptr = Single_Obj::get_obj();
...
delete ptr;
除非你, 手动的 去调用delete
release version
class Single_Obj{
private:
Single_Obj(