The default parameter passing mechanism in C++ is by value, which makes a copy of the parameter being passed. Making a copy of a critical-section instance is ueseless because the changes made to the copy are only known inside the function making the changes.
Critical-section instances in C++ must be passed by reference (or by pointer) so that changes made to the critical section within the function appear outside the function.
This page last modified on 19 June 2003.