having const after a member function means that, that function will not
and shall not change any of its variables.

This is misleading. The method can change any of its local variables and non-const parameters, but it cannot change the state of the object. That means non-mutable data members of the class cannot be changed in a const method: