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
    };




  • 相关阅读:
    sys.argv
    webbrowser
    2014年11月26日(程序员的加班)
    下一站红灯
    Java基础知识总结(超级经典)
    JAVA的三个开发方向
    2014年11月23日
    大学,一切才刚刚开始
    XML学习总结
    C# 文件重命名
  • 原文地址:https://www.cnblogs.com/fireae/p/3684915.html
Copyright © 2011-2022 走看看