// 一个祼的指针不要用二个shared_ptr管理,unique_ptr;
// 下面是错误例子,一个指针,二个管理,但他们引用各为1,如果其中一个构析了,会导至另一个正在使用的会异常
auto pObj = new Object(1);
ObjectPtr = Obj(pObj);
ObjectPtr = Obj(pObj2);
// 用weakptr打破循环引用,parent 和 child;
// 当需要用类的内部接口中,如果需要将this作为智能指针来使用的话,需要在该类派生自enable_shared_form_this
// 碰到接口转换,想取到this,需要在类内部使用 shared_form_this();
// 使用shared_ptr 作为函数的接口,如果有可能有const shared_ptr&形式
// shared_ptr weak_ptr 和 祼指针相比,会大很多,并且效率上会有影响,尤其是在 多线程模式下;
Objectptr obj3(new Object(2));// 智能指针的实现,本身会有一次new,同时我们还需要再new 一次object; 这样子就会耗费二次new
// 下面就是为了解决,一次new完成例子
ObjectPtr obj5 = std::make_shared<object>(3);// 这句等价上面的,但能减少一次
// enable_shared_from_this shared_from_this() 和构造析构函数一样,某些情况是不能够用出的,会出错
// 某些情况,会出现内存不会降的问题,优其是使用weak_ptr来处理循环引用的问题