【C++】手动实现nique_ptr智能指针
1、自己实现封装了一个智能指针,并且使用了模板
目录
代码实现:
输出结果如下:
代码实现:
#include <iostream>using namespace std;template <typename T>
class UniquePtr
{
private:T *ptr;public://默认构造函数UniquePtr():ptr(nullptr){}//构造函数explicit UniquePtr(T *p):ptr(p){}//析构函数~UniquePtr(){delete ptr;}//禁止拷贝构造函数UniquePtr(const UniquePtr&) = delete;//禁止拷贝赋值运算符UniquePtr &operator=(const UniquePtr&) = delete;//移动构造函数UniquePtr(UniquePtr &&other)noexcept:ptr(other.ptr){other.ptr = nullptr;}//重载*操作符T& operator*()const{return *ptr;}//重载->操作符T& operator->()const{return *ptr;}//移动赋值预算符UniquePtr &operator=(UniquePtr &&other)noexcept{if(this != &other){delete ptr;ptr = other.ptr;other.ptr = nullptr;}return *this;}};int main()
{UniquePtr<int> unique(new int(10));UniquePtr<int> unique1 = move(unique);//cout<<*unique<<endl;cout<<*unique1<<endl;UniquePtr<int> unique2;unique2 = move(unique1);cout<<*unique2<<endl;return 0;
}