C++11智能指针

2018-11-17  本文已影响0人  阿春_abcdlcq

class example1

{

public:

    example1( int i ):m_i(i)

    {

    }

    ~example1()

    {

    }

    int getI() const

    {

        return m_i;

    }

    void setI(int i)

    {

        m_i = i;

    }

private:

    int m_i;

};

1.auto_ptr

    std::auto_ptr ap(new example1(2));

    if ( ap.get() )//判断是否有效

    {

        printf( "getI:%d", ap->getI() );//调用类对象的方法

        example1* pe = ap.release();//解绑

        ap.reset(pe);//重设

        ap.reset();//删除,设为空

    }

2.unique_ptr

控制权唯一,拷贝和赋值函数被删了

   unique_ptr exam1(new example1(2));

   unique_ptr exam2 = move(exam1);//exam1变空了

3.shared_ptr

    shared_ptr exam1(new example1(2));

    shared_ptr exam2=exam1;//共享一个,有引用计数

4.weak_ptr

协助 shared_ptr 工作,没有重载*和->,可以使用 lock 获得一个可用的 shared_ptr 对象,

use_count 返回与 shared_ptr 共享的对象的引用计数

expired 用于检测所管理的对象是否已经释放

reset 将 weak_ptr 置空

上一篇 下一篇

猜你喜欢

热点阅读