Abel'Blog

我干了什么?究竟拿了时间换了什么?

0%

C++智能指针

简述

智能指针在C++中其实是非常推荐使用的。从《Effective C++》、《现代C++白皮书》和《Modern Effective C++》里面也提到了带来的好处。减少内存泄漏的问题。在遇到了异常的时候,也能很好的防止内存泄漏的发生。很早之前STL中就推出了auto_ptr(1998年发明),在C++11废弃(deprecated)被unique_ptr取代在使用过程中还需要使用转移语法。C++11提供了shared_ptr,unique_ptr,weak_ptr三种智能指针。

Item 18 独占资源使用std::unique_ptr

前提是指针是独占方式的话,可以当成内存指针来使用。速度和空间都不会有太多的损失。

它是有专属性,通过std::move转换所有权。不允许拷贝,如果使用了拷贝,其实两个unique_ptr指向同一个对象指针,销毁的时候将会调用两次析构函数。

最常用的情况就是通过工厂类产出的一个指针。

Item 19 共享资源使用std::shared_ptr

shared_ptr

Item 20 当std::shard_ptr可能悬空时使用std::weak_ptr

Item 21 优先考虑使用std::make_unique和std::make_shared而非new

Item 22 当使用Pimpl惯用法,请在实现文件中定义特殊成员函数

引用