The following is a description from the standard, which implies that the implicit parameter of an object is used for overload purposes.
Before the resolution of the overload starts, functions selected by searching by name and subtracting the template argument are combined to form a set of candidate functions (the exact criteria depend on the context in which the overload is resolved).
If any candidate function is a member function (static or non-static), but not a constructor, it is processed as if it had an additional parameter (implicit parameter of the object) that represents the object for which they are called and appears before the first of actual parameters.
Similarly, the object on which the member function is called is added to the argument list as an argument to the object object
For class X member functions, the parameter type of an implicit object depends on the cv qualifications and ref-qualifications of the member function.
For static member functions, it is assumed that the parameter of the implicit object matches any object: its type is not checked and no conversion sequence is performed for it .
source share