Passing Arguments by Value and by Reference
Figure 6.19 compares pass-by-value and pass-by-reference with reference parameters. The “styles” of the arguments in the calls to function
squareByValue and function
squareByReference are identical—both variables are simply mentioned by name in the function calls. Without checking the function prototypes or function definitions, it isn’t possible to tell from the calls alone whether either function can modify its arguments. Because function prototypes are mandatory, the compiler has no trouble resolving the ambiguity.
1 // Fig. 6.19: fig06_19.cpp 2 // Passing arguments by value and by reference. 3 #include <iostream> 4 using namespace std; 5 6 int squareByValue( ...