As stated in book Effective C++: "Use const whenever possible.", one would assume that this definition: Vec3f operator+(Vec3f &other);
would be better defined as Vec3f operator+(const Vec3f &other) const;
or even better as const Vec3f operator+(const Vec3f &other) const;
.
Or an example with 5 const keywords: const int*const Foo(const int*const&)const;
Of course, you should only include const where there can be one. What Im asking is it a good practice to use them whenever possible? While it does give you more error safe code, it can get quite messy. Or should you, for example, ignore pointer and reference const (unless you really need it), and use it only on the types itself, as in const int* Foo(const int* parameter)const;
, so it doesnt end up too messy?
Additional info:
http://duramecho.com/ComputerInformation/WhyHowCppConst.html
Thanks in advance!
Best Answer
You should use
const
when you want to be sure not to change variable accidentally or intentionally. Some constants (globals and class static, strings & integers, but not variables with nontrivial constructor) can be placed in read-only parts of the executable, therefore result in segmentation fault if you try to write to it.You should be explicit using
const
as a specifier on functions that follow this principle as well as on function arguments. If you don't have to change actual argument, make itconst
. This doesn't limit the possible usages of such function, but extends them, because now they might be used onconst
arguments, and onconst
objects.In declaration
every
const
means something different and yes, obviously it should be used if it is needed.Summary
Using
const
increases type-safety of your program.