美文网首页
智能指针简单实现

智能指针简单实现

作者: Youzhicha | 来源:发表于2023-11-27 13:59 被阅读0次

unique_ptr实现示例

template <typename T>
class unique_ptr {
public:
    // 默认构造函数
    unique_ptr() noexcept : ptr_(nullptr) {}

    // 构造函数,接受一个指针
    explicit unique_ptr(T* ptr) noexcept : ptr_(ptr) {}

    // 析构函数
    ~unique_ptr() {
        delete ptr_;
    }

    // 禁用拷贝构造函数和拷贝赋值操作符
    unique_ptr(const unique_ptr&) = delete;
    unique_ptr& operator=(const unique_ptr&) = delete;

    // 移动构造函数
    unique_ptr(unique_ptr&& other) noexcept : ptr_(other.ptr_) {
        other.ptr_ = nullptr;
    }

    // 移动赋值操作符
    unique_ptr& operator=(unique_ptr&& other) noexcept {
        if (this != &other) {
            delete ptr_;
            ptr_ = other.ptr_;
            other.ptr_ = nullptr;
        }
        return *this;
    }

    // 重置指针
    void reset(T* ptr = nullptr) noexcept {
        delete ptr_;
        ptr_ = ptr;
    }

    // 获取指针
    T* get() const noexcept {
        return ptr_;
    }

    // 访问对象的成员操作符
    T* operator->() const noexcept {
        return ptr_;
    }

    // 解引用操作符
    T& operator*() const noexcept {
        return *ptr_;
    }

    // 隐式转换为bool类型,判断指针是否为空
    explicit operator bool() const noexcept {
        return ptr_ != nullptr;
    }

private:
    T* ptr_;
};

举例

std::unique_ptr<framePool> framePool_; 
if(!framePool_){
  framePool_.reset(new framePool());
}

智能指针判空处理

!framePool_仍然使用了std::unique_ptr的隐式转换为bool类型的成员函数。
如果framePool_持有一个有效的指针(非空),则转换结果为false,否则为true。

reset

为unique_ptr的显式成员函数。

相关文章

  • C++研发工程师笔试题/面试题(1-10)

    1. (1) 简述智能指针的原理;(2)c++中常用的智能指针有哪些?(3)实现一个简单的智能指针。 简述智能指针...

  • C++面试重点再梳理

    智能指针 请讲一下智能指针原理,并实现一个简单的智能指针 智能指针其实不是一个指针。它是一个用来帮助我们管理指针的...

  • C++智能指针

    引用计数技术及智能指针的简单实现 基础对象类 辅助类 智能指针类 使用测试 参考: C++ 引用计数技术及智能指针...

  • 九章算法

    请简述智能指针原理,并实现一个简单的智能指针。 如何处理循环引用问题? 请实现一个单例模式的类,要求线程安全 如何...

  • 智能指针的简单实现

    下面实现一个指向int的智能指针。 sub为辅助类,用于存储指针引用的状态。所有成员都是私有的,仅供autoptr...

  • C++动态内存与智能指针

    智能指针 智能指针的类型 shared_ptr实现共享式拥有的概念(shared ownership)。多个智能指...

  • C++ 指针特别篇-指针转换和智能指针

    智能指针 智能指针的头文件,#include ① shared_ptr 操作引用计数实现共享式...

  • Android智能指针

    网上已经有很多分析智能指针的文章了,讲得不错的是:Android系统的智能指针(轻量级指针、强指针和弱指针)的实现...

  • C++ 引用计数技术及智能指针的简单实现

    1.智能指针是什么 简单来说,智能指针是一个类,它对普通指针进行封装,使智能指针类对象具有普通指针类型一样的操作。...

  • 9_智能指针示例

    智能指针在37_智能指针分析中详细学习过。此处实例中通过模板实现了可复用的智能指针模板类 需要一个特殊的指针——通...

网友评论

      本文标题:智能指针简单实现

      本文链接:https://www.haomeiwen.com/subject/hqwzwdtx.html