【C++】智能指针简述(四):shared_ptr
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在开始本文内容之前,我们再来总结一下,前文内容: 1.智能指针采用RAII机制,在构造对象时进行资源的初始化,析构对象时进行资源的清理及汕尾. 2.auto_ptr防止拷贝后析构释放同一块内存,采用"转移所有权"的方法.(实际开发中auto_ptr并不实用) 3.scoped_ptr与auto_ptr类似,但是它与auto_ptr最大的区别是:它不能转移所有权,即就是禁止拷贝/赋值!(当然,我们也探讨了C++中禁止拷贝对象的技术,在此不赘述) 回顾完前文内容后,我们今天来讨论shared_ptr. 我们虽然有了scoped_ptr,但在实际开发过程中,我们的确要是想对智能指针进行拷贝,那scoped_ptr就鞭长莫及了. 那么,我们回到原始的问题:对智能指针进行拷贝,会出现什么情况? 我们在第二篇文章也分析了:如果对智能指针不进行特殊处理,在析构时,会将同一块内存释放多次,程序会崩溃! 因此,我们 要想对智能指针进行拷贝,就必须做一些特殊的处理,使得析构函数只释放一次内存. 此时,如果探究过深浅拷贝的同学,可能心中已经有了答案:用引用计数!!!(深浅拷贝问题,以后我会讨论,不是本文重点) 考虑到有些童鞋可能不知道什么是引用计数,那我就在这里解释一下: 在引用计数中