美文网首页
C++ 智能指针

C++ 智能指针

作者: IT孤独者 | 来源:发表于2016-12-27 18:31 被阅读0次

下面是一个智能指针使用的例子(以下的内容仅仅针对std::shared_ptr这一个智能指针)

源码 输出

先说几个问题,shared_ptr的智能指针会存在循环引用的问题,这个问题在开发的时候需要注意。这里我想说我使用智能指针的一个初衷。

从例子可以看出,我使用容器vector,C++比C的优势处在于,C++的标准库提供了大量的容器和算法,但是,容器的使用上面,我们的建议是不要存留大对象(泛指拷贝构造函数庞大的类),原因就不多解释了,大对象的考虑和副本生成是非常耗费时间的,为了解决这个问题,我们采用对象的指针,这样容器中就可以存入这些对象的指针,易于我们的操作!

引入指针以后,我们面临一个问题,就是内存释放的问题,我们必须小心处理这个问题,否则很容易出现内存泄漏的问题。

这里使用share_ptr的原因就是为了规避这个内存管理的问题,可以从例子很容易看出,我们并没有太多的关系这个对象的释放问题。不过,如何将一个堆上的指针封装到一个智能指针的对象也是一个问题,这里使用了std::make_shared解决这个问题,

make_shared

但是对于很多其他的使用new的方式生成的指针,我们可以使用对象的方式进行赋值

std::shared_ptr临时对象

另外对于智能指针对象还提供了reset函数用来重置所封装的指针。

相关文章

网友评论

      本文标题:C++ 智能指针

      本文链接:https://www.haomeiwen.com/subject/xejevttx.html