I'm curious about when to use pointers in C++ compared to passing by reference, which is common in other programming languages. If I suspect that a variable will need to be passed by reference later on, does that mean I should just create a pointer version of it right from the start?
5 Answers
No, using pointers isn't the way to go here. Pointers allow for more functionality, but C++ has solid support for pass-by-reference. You could Google 'pointer vs reference in C++' to get more insight into these concepts and when to use each.
C++ indeed allows passing by reference. Stick to that when you can for better safety and clarity in your code. There are also smart pointers available if you're dealing with dynamic memory, which can help manage the object's lifetime without the drawbacks of raw pointers. Avoid using raw pointers unless it's necessary for certain APIs or libraries.
Just a heads up: while passing unique_ptr can signal ownership transfer, it's better to use regular references or pointers when you just need to access an object without complicating memory management. Keeping your interface clean helps other developers understand your code better.
Actually, you don't necessarily need to resort to pointers. C++ supports passing by reference directly, which can often be a cleaner and safer choice. Generally, it's better to use references or value semantics unless pointers are absolutely necessary. Check out some core guidelines on this topic.
You have a few options in C++. You can make a variable a pointer and pass that pointer, or pass the variable's address to a function. Or, simply pass the variable by reference without turning it into a pointer. Each choice has different implications for ownership and lifetime of the variable, so it's worth considering what you need for your specific case.

Good point about ownership! It's critical to understand how you manage memory and lifetime in C++. Passing by reference can indicate that the function doesn't own the variable, while using smart pointers like unique_ptr or shared_ptr gives you better control over ownership.