devxlogo

Don’t Use const for Passing Parameters by Value

Don’t Use const for Passing Parameters by Value

To avoid undesirable changes to an argument passed by reference, you pass it as a const parameter. For example:

 void f(const string & s); // f can't change s

However, some programmers use const even when they pass parameters by value, for example:

 void f(const int n); // n is passed by value, why const?

Is it really necessary? No, it’s not. Remember that when you pass a parameter by value, the function called can’t make changes to original value anyway because it receives a copy of it. Therefore, the use of const for passing parameters by value only blocks the function from changing its local copy. However, whether a function changes its local copy of some variable is an implementation detail; it’s not a part of the interface. Therefore, users of this function don’t (and shouldn’t) need to know that. As a rule, don’t declare parameters const if they are passed or returned by value.

devx-admin

Share the Post: