C++ Coding Standards: Take Parameters Appropriately by Value, (Smart) Pointer, or Reference
Choosing well among values, references, and pointers for parameters is good habit that maximizes both safety and efficiency. This chapter from Herb Sutter and Andrei Alexandrescu will help you do just that.
This chapter is from the book
Parameterize well: Distinguish among input, output, and input/output parameters, and between value and reference parameters. Take them appropriately.