当前位置: 代码迷 >> 综合 >> C++ 智能指针的一个实现(基于模板和Shared_ptr)
  详细解决方案

C++ 智能指针的一个实现(基于模板和Shared_ptr)

热度:59   发布时间:2024-01-20 02:13:34.0

自己实现了一个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
  相关解决方案