zoukankan      html  css  js  c++  java
  • OpenCV笔记(Ptr)

    //OpenCV中使用的智能指针。类似于std::smart_ptr,但是在OpenCV中可以用Ptr轻松管理各种类型的指针。
    //可以用Ptr<MyObjectType> ptr代替MyObjectType* ptr,MyObjectType可以是C的结构体或C++的类,
    //如果没有自动析构的函数,需要实现
    //template<> void Ptr<MyObjectType>::delete_obj() { call_destructor_func(obj); }
    //如果C++类中有析构函数,可以不用实现。
    template<typename _Tp> class Ptr
    {
    public:
        //! empty constructor
        Ptr();
        //! take ownership of the pointer. The associated reference counter is allocated and set to 1
        Ptr(_Tp* _obj);
        //! calls release()
        ~Ptr();
        //! copy constructor. Copies the members and calls addref()
        Ptr(const Ptr& ptr);
        template<typename _Tp2> Ptr(const Ptr<_Tp2>& ptr);
        //! copy operator. Calls ptr.addref() and release() before copying the members
        Ptr& operator = (const Ptr& ptr);
        //! increments the reference counter
        void addref();
        //! decrements the reference counter. If it reaches 0, delete_obj() is called
        void release();
        //! deletes the object. Override if needed
        void delete_obj();
        //! returns true iff obj==NULL
        bool empty() const;
        //! cast pointer to another type
        template<typename _Tp2> Ptr<_Tp2> ptr();
        template<typename _Tp2> const Ptr<_Tp2> ptr() const;
        //! helper operators making "Ptr<T> ptr" use very similar to "T* ptr".
        _Tp* operator -> ();
        const _Tp* operator -> () const;
        operator _Tp* ();
        operator const _Tp*() const;
        _Tp* obj; //< the object pointer.
        int* refcount; //< the associated reference counter
    };




  • 相关阅读:
    3年度研发项目情况项目目标文档
    2系统利益相关者描述案例
    讨论结果
    本学期《软件需求分析》需要掌握的内容(个人总结)
    第二周进度条
    四则运算
    第一周进度记录
    java web
    ke tang zuo ye
    2015-05-26 随笔
  • 原文地址:https://www.cnblogs.com/fireae/p/3684915.html
Copyright © 2011-2022 走看看