自己实现了一个C++的智能指针。
基于Shared_ptr来实现,支持默认构造,拷贝构造,移动构造, 引用计数器,
注意智能指针中存放的指针地址一旦被一个智能指针对象托管以后,不要再直接拿此地址来初始化其他对象,否则会引发多次泄漏的问题。(所以还是要特别小心)
如果要初始化其他对象,请直接使用智能指针来进行初始化。(移动构造,拷贝构造,赋值等)
所以一旦决定采用智能指针来托管对象,代码中其他地方应该只出现使用此地址的代码,或者传递值给系统API
源代码如下:Clang 5.0 编译通过
#include <iostream>
#include <memory>
#include <string>template <typename Object>
class SmartPointer
{
public:SmartPointer(Object * p = nullptr): m_ptr(p),m_pRefCnt(new size_t{}){if(p)*m_pRefCnt = 1;else*m_pRefCnt = 0;}~SmartPointer(){releaseCount();}// copy constructorSmartPointer(const SmartPointer & rhs){if(this