The second const tells the compiler that the function won't change member variables (there's an exception re mutable). This means that an instantiation of the class marked as const can still use const marked member functions.
It's mainly a correctness feature. If a class instantiated variable is marked as const, you wouldn't expect its contents to be changed - would you. The compiler will issue an error if this is tried with a member function not marked as const.