**智能指针**是用于管理内存资源的一类特殊指针,可以自动管理对象和内存空间,使用简单,便于编程者进行管理内存资源。
C++11标准提供了四种智能指针:`std::unique_ptr`、`std::shared_ptr`、`std::weak_ptr`和`std::auto_ptr`,其中`std::auto_ptr`已被标准弃用。
* `std::unique_ptr`是一种独占所有权的智能指针,它拥有它指向的对象,并负责管理对象的生命周期。它确保在某个对象上只有一个unique_ptr指针指向它,当unique_ptr指针被销毁时,它所指向的对象也会被自动销毁。
* `std::shared_ptr`是一种共享所有权的智能指针,它可以有多个shared_ptr指向同一个对象,当所有指向该对象的shared_ptr都被销毁时,它所指向的对象才会被销毁。
* `std::weak_ptr`是一种弱引用的智能指针,它不拥有它所指向的对象,在不影响对象生存期的情况下,可以有多个weak_ptr指向同一个对象。
* `std::auto_ptr`是一种独占所有权的智能指针,它只能有一个auto_ptr指向某个对象,当它被销毁时,它所指向的对象也会被自动销毁。但是由于它的实现存在很多问题,所以在C++11标准中被弃用。