zoukankan      html  css  js  c++  java
  • C++一个简单的手柄类模板

    #ifndef HANDLE_H
    #define HANDLE_H 
    #include "Animal.h"
    
    template <typename T>
    class Handle{
        public:
            Handle(T *ptr);
            Handle(const Handle &other);
            Handle &operator = (const Handle &other);
            ~Handle();
            T *operator->();
        private:
            T *ptr_;
    };
    
    template <typename T>
    inline Handle<T>::Handle(T *ptr)
        :ptr_(ptr->copy())
    {}
    
    template <typename T>
    inline Handle<T>::Handle(const Handle &other)
        :ptr_(other.ptr_->copy())
    {}
    
    template <typename T>
    inline Handle<T> &Handle<T>::operator = (const Handle &other)
    {
        if(this != &other){
            delete ptr_;
            ptr_ = other.ptr_->copy();
        }
        return *this;
    }
    
    template <typename T>
    inline Handle<T>::~Handle()
    {
        delete ptr_;
    }
    
    template <typename T>
    inline T *Handle<T>::operator -> ()
    {
        return ptr_;
    }
    #endif  /*HANDLE_H*/

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

  • 相关阅读:
    python---模块与包
    python---迭代器与生成器
    python---装饰器
    Python---函数
    Python---文件操作
    Python---数据类型
    浅谈UBUNTU
    java 键盘输入多种方法
    动态规划解最长公共子序列问题
    线段树
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4833296.html
Copyright © 2011-2022 走看看