Argumento de correspondência e este ponteiro
Funções de membro de classe são tratadas de forma diferente, dependendo se elas são declaradas como static.Porque as funções não estática tem um argumento implícito que fornece a this funções não estática do ponteiro, são consideradas para ter um argumento mais que funções estáticas; Caso contrário, eles são declarados idêntico.
Essas funções de membro não estático exigem que o implícitas this ponteiro coincide com o tipo de objeto através do qual a função é chamada, ou para operadores sobrecarregados, exigem que o primeiro argumento corresponder ao objeto no qual o operador está sendo aplicado.(Para obter mais informações sobre operadores sobrecarregados, consulte Operadores sobrecarregados.)
Ao contrário de outros argumentos em funções sobrecarregadas, não há objetos temporários são introduzidos e não há conversões são tentadas quando se assemelhar a this argumento do ponteiro.
Quando o – > -seleção de membro é usado para acessar uma função de membro, o this tem o argumento do ponteiro de tipo de class-name* const. If the members are declared as const or volatile, the types are const class-name* const and volatile class-name * const, respectively.
O . o operador de seleção de membro funciona exatamente da mesma forma, exceto que um implícito & (endereço de entrada) do operador é prefixado ao nome do objeto.O exemplo a seguir mostra como isso funciona:
// Expression encountered in code
obj.name
// How the compiler treats it
(&obj)->name
O operando esquerdo da –>* e .* operadores (ponteiro para o membro) são tratados da mesma maneira que o . e –> operadores (seleção de membro) em relação ao argumento de correspondência.