zoukankan      html  css  js  c++  java
  • 智能指针模板,要管理动态分配的内存

    #ifndef SMARTPTR_HPP
    #define SMARTPTR_HPP 
    #include <stddef.h>
    
    template <typename T>
    class SmartPtr{
        public:
            SmartPtr(T *type = NULL);
            void resetPtr(T *type);
            const T *getPtr()const;
            operator bool() const{
                return ptr_ == NULL;
            }
            ~SmartPtr();
    
            T &operator*();
            const T &operator*()const;
            T *operator->();
            const T *operator->()const;
    
        private:
            SmartPtr(const SmartPtr &);
            void operator=(const SmartPtr &);
            T *ptr_;
    };
    
    template <typename T>
    inline SmartPtr<T>::SmartPtr(T *type)
        :ptr_(type)
    {}
    
    template <typename T>
    inline void SmartPtr<T>::resetPtr(T *type)
    {
        if(ptr_ != type){
            if(ptr_ != NULL){
                delete ptr_;
            }
            ptr_ = type;
        }
    }
    
    template <typename T>
    inline const T *SmartPtr<T>::getPtr() const
    {
        return ptr_;
    }
    
    template <typename T>
    inline SmartPtr<T>::~SmartPtr()
    {
        if(ptr_ != NULL){
            delete ptr_;
        }
    }
    
    template <typename T>
    inline T &SmartPtr<T>::operator*()
    {
        return *ptr_;
    }
    
    template <typename T>
    inline const T &SmartPtr<T>::operator*() const
    {
        return *ptr_;
    }
    
    template <typename T>
    inline T *SmartPtr<T>::operator->()
    {
        return ptr_;
    }
    
    template <typename T>
    inline const T *SmartPtr<T>::operator->() const
    {
        return ptr_;
    }
    #endif  /*SMARTPTR_H*/

    版权声明:本文博主原创文章。博客,未经同意不得转载。

  • 相关阅读:
    @slf4j 使用方法
    spark入门简单介绍
    spring boot 的简单实用和spring cloud 概念
    nginx与Tomcat
    python27+百度文字识别api
    python27+opencv2.4.10+pytesseract0.2.0图片识别
    学习vue的核心功能
    使用vscode +vue的初始环境搭建
    excel的vlookup,第一次用
    pyautogui键盘鼠标控制,python27
  • 原文地址:https://www.cnblogs.com/zfyouxi/p/4913295.html
Copyright © 2011-2022 走看看