This is the definitive article on “const correctness”: https://isocpp.org/wiki/faq/const-correctness.
In a nutshell, using const is good practice because…
-
It protects you from accidentally changing variables that aren’t intended be changed,
-
It protects you from making accidental variable assignments. For instance, you are protected from
if( x = y ) // whoops, meant if( x == y ).
-
The compiler can optimize it.
At the same time, the compiler can generate more efficient code because it knows exactly what the state of the variable/function will be at all times. If you are writing tight C++ code, this is good.
You are correct in that it can be difficult to use const-correctness consistently, but the end code is more concise and safer to program with. When you do a lot of C++ development, the benefits of this quickly manifest.