in c++, member functions differing only in their constness can be overloaded.
and a const member function is not allowed to modify any of the non-static data members of the object on which it is invoked
member data declared with mutable can be modified even in const member function