Smart pointers

The smart pointers from the standard library wrap a raw pointer and make the ownership of the object it points to explicit. When used correctly, there is no doubt about who is responsible for deleting a dynamic object. The three smart pointer types are std::unique_ptr, std::shared_ptr, and std::weak_ptr. As their names suggest, they represent three types of ownership of an object:

  • Unique ownership expresses that I, and only I, own the object. When I'm done using it, I will delete it.
  • Shared ownership expresses that I own the object along with others. When no one needs the object anymore, it will be deleted.
  • Weak ownership expresses that I'll use the object if it exists, but don't keep it alive just for me.

Get C++ High Performance now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.