有人能用简单的英语解释智能指针吗?

Vex*_*toR 7 c++ smart-pointers

今天我被问到C++中的智能指针,我找不到任何关于它的有用信息.

请有人告诉:什么是智能指针?你什么时候需要它?你有任何智能指针实际有用的例子吗?

谢谢!

Mic*_*eyn 6

智能指针主要帮助您:

  • 抛出异常时避免泄漏.抛出异常时,您不希望泄漏try块中先前分配的任何对象.通过将它们包装在智能指针中,这些指针将在退出try块时被销毁,这些对象将被正确销毁.
  • 通过引用计数所有者来管理对象的生命周期(即,最后一个销毁其引用特定对象的智能指针实际上释放对象).这在松散耦合的场景中尤其有用,在这种场景中,不清楚对象应该在何时被销毁,因为对象的用户不了解彼此.

智能指针有用的一个很好的例子:

指向向量的向量.例如,通过使其成为共享指针的向量,当向量被破坏和/或移除对象时,将自动释放对象.这样可以自动执行对象生命周期管理,并帮助容器用户避免内存泄漏.