标签:poor return rhs 简单 operator unique ptr
template <typename T> class poor_unique_ptr { public: explicit poor_unique_ptr(T* ptr=nullptr): ptr_(ptr) {}; ~poor_unique_ptr() { if (ptr_) { delete ptr_; } } // 删除拷贝构造和拷贝赋值 poor_unique_ptr(const poor_unique_ptr&) = delete; poor_unique_ptr& operator=(const poor_unique_ptr&) = delete; // 移动拷贝和移动赋值 poor_unique_ptr(poor_unique_ptr&& rhs): ptr_{rhs.release()} {} poor_unique_ptr& operator=(poor_unique_ptr&& rhs) { reset(rhs.release()); return *this; } T* get() const {return ptr_;} T* release() { // 并不会释放其指向的对象 T *p = ptr_; ptr_ = nullptr; return p; } void reset(T* ptr) { delete ptr_; ptr_ = ptr; } void swap(poor_unique_ptr& rhs){ std::swap(ptr_, rhs.ptr_); } T& operator*() {return *ptr_;} T* operator->() {return ptr_;} explicit operator bool() {return static_cast<bool>(ptr_);} private: T* ptr_; };
标签:poor,return,rhs,简单,operator,unique,ptr 来源: https://www.cnblogs.com/zyb993963526/p/16402100.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。