Smart Pointers: Passing Smart Pointers
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
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>¶meter 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>¶meter to express that a function might reseat the shared pointer
- R.36: Take a const
shared_ptr<widget>¶meter 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