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




  • 相关阅读:
    企业级-Shell案例6——查看网卡的实时流量
    匿名内部类--毕向东java基础教程学习笔记
    简单的Windows登陆界面设计
    初学多线程练习1--电子时钟
    内部类--毕向东Java基础教程学习笔记
    异常处理——毕向东Java基础教程学习笔记
    Linux:常用shell命令
    CVE-2019-0708漏洞利用复现
    MS17-010漏洞利用复现
    RIP路由协议:基础设置/通信练习/兼容问题
  • 原文地址:https://www.cnblogs.com/fireae/p/3684915.html
Copyright © 2011-2022 走看看