C++11智能指针

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 置空

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容