Passing Smart Pointers
Explore the six essential rules for passing std::unique_ptr and std::shared_ptr in C++. Understand how to transfer ownership, reseat pointers, and manage reference counts to ensure safe and efficient memory handling according to C++ core guidelines.
We'll cover the following...
We'll cover the following...
Passing smart pointers is an important topic that is seldom addressed. This chapter 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 important DRY (don’t repeat yourself) principle for software development. In the end, we only have six 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>&