Endereço de funções sobrecarregadas

 

Publicado: abril de 2016

Uso de um nome de função sem argumentos retorna o endereço dessa função. Por exemplo:

int Func( int i, int j );
int Func( long l );

...

int (*pFunc) ( int, int ) = Func;

No exemplo anterior, a primeira versão do Func estiver selecionada, e seu endereço é copiado para pFunc.

O compilador determina qual versão da função será selecionada localizando uma função com uma lista de argumentos que corresponda exatamente ao destino. Os argumentos em declarações de função sobrecarregadas são comparados com um dos seguintes:

  • Um objeto que está sendo inicializado (conforme mostrado no exemplo anterior)

  • O lado esquerdo de uma instrução de atribuição

  • Um argumento formal a uma função

  • Um argumento formal a um operador definido pelo usuário

  • Um tipo de retorno de função

Se nenhuma correspondência exata for encontrada, a expressão que usa o endereço da função é ambígua e um erro será gerado.

Observe que, embora uma função não-membro, Func, foi usada no exemplo anterior, as mesmas regras são aplicadas quando usar o endereço de funções de membro sobrecarregadas.

Consulte também

Sobrecarga (C++)