Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Home » Tip Bank » C++
Language: C++
Expertise: Beginner
Oct 24, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

The const pass-by-value


void foo(const int x) {
  // not altering x

Herb Sutter in Exceptional C++, pg.177 says, "const pass-by-value is unuseful and misleading at best." I disagree, at a glance you know x isn't going to change throughout the function I feel that's useful to know. It's 50/50 amongst people in our office. Where do you stand?

const in pass-by-value is indeed redundant. The function can't make changes to the original variable anyway, because it has a local copy thereof. Now one can argue that even in that case, the use of const documents the fact that the function doesn't change its local copy. However, do we really care about this? If you are the implementer of the function, you probably do but you certainly don't need to document this fact, as it is merely an implementation detail, not a part of the interface. Users of this function certainly don't care; all they need to know is that the original variable can't be altered, and the use of pass-by-value, with or without const, already guarantees that. To conclude, the use of const in pass-by-value is an example of over-specification that exposes an implementation detail. In general, exposing implementation details is bad object-oriented programming practice.

DevX Pro
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date