Smart Pointers: Passing Smart Pointers
In this lesson, we will discuss the rules regarding passing smart pointers.
We'll cover the following
Passing smart pointers is an important topic that is seldom addressed. This process ends with the C++ core guidelines since they have six rules for passing std::shared_ptr
and std::unique_ptr
.
The Six Rules
The following six rules violate the import dry (don’t repeat yourself) principle for software development. At the end, we have only four rules, which makes life as a software developer a lot easier. Here are the rules.
- R.32: Take a
unique_ptr<widget>
parameter to express that a function assumes ownership of a widget - R.33: Take a
unique_ptr<widget>&
parameter to express that a function reseats the widget - R.34: Take a
shared_ptr<widget>
parameter to express that a function is part owner - R.35: Take a
shared_ptr<widget>&
parameter to express that a function might reseat the shared pointer - R.36: Take a const
shared_ptr<widget>&
parameter to express that it might retain a reference count to the object ??? - R.37: Do not pass a pointer or reference obtained from an aliased smart pointer
Get hands-on with 1400+ tech skills courses.