绪
本篇是尝试对C++11的三种智能指针(unique_ptr, shared_ptr, weak_ptr)进行的复现结果, 智能指针的复现在面试中经常考到, 需要好好熟悉...., 计数为0时自动delete. std::make_shared用来消除显式使用的new操作, .get()用来取得原始指针, .reset()用来消掉一个当前的引用计数, .use_count()得到目标对象的引用计数..., 注意防止自我赋值
void reset(pointer p = nullptr) noexcept {
swap(UniquePtr(p));
}
};
智能指针基类
由于shared_ptr...的简单实现
shared_ptr需要一个间接层处理引用计数的问题, 因此带来了额外的开销, unique_ptr则完全没有额外的空间开销
对于性能不敏感的情况, 最好不要使用原始指针
建议不要对某个对象进行两次以上的...= nullptr; }
};
weak_ptr的简单实现
weak_ptr的实现与shared_ptr类似, 只是修改的是weak计数
不允许直接从原始指针构造, 必须绑定在shared_ptr上