No nosso caso, myFnPtr e myFn tornou sinônimo. Chamar função apontada pelo ponteiro Enquanto functionPointer e actualFunctionName são sinônimos que você pode chamar a função real usando functionPointer da mesma forma como faria nos actualFunctionName. Na nossa situação acima, você faria por exemplo, myFnPtr (68,78, 50) Exemplo O código a seguir mostra como você pode criar um ponteiro para uma função e usá-lo para chamar a função: #include using namespace std; flutuar myFn (float ident1, int ident2) {diferença flutuador = ident1 - ident2; retornar diferença; } Float (* myFnPtr) (float, int) = myFn; int main () {resposta = flutuador myFnPtr (6.
5, 2); cout retornar 0; } Pointer pela Declaração Nos exemplos acima o ponteiro foi criado como, float (* myFnPtr) (float, int) = myFn; Isto está criando ponteiro pela inicialização. Na indicação do endereço da função pontas é armazenado no objecto ponteiro (myFnPtr), durante a criação do ponteiro. Você pode criar o ponteiro pela declaração e, em seguida, atribuir o valor de endereço depois da seguinte forma: float (* myFnPtr) (float, int); myFnPtr = myFn; Neste caso, ambas as declarações ou a declaração de atribuição deve estar em uma função (como a função principal).
Use de ponteiro para uma função O principal uso de um ponteiro para uma função é como um parâmetro para outra função. O código a seguir ilustra isso: #include using namespace std; flutuar myFn (float ident1, int ident2) {diferença flutuador = ident1 - ident2; retornar diferença; } Flutuar squareDifference (flutuador (* myFnPtr) (float, int)) {float SQR = myFnPtr (6,5, 2) * myFnPtr (6,5, 2); retornar sqr; } Int main () {resposta = flutuador squareDifference (myFn); cout retornar 0; } O segredo é que você dividir a inicialização em sua esquerda e direita operando.
O operando da esquerda vai para os parênteses das outras funções (squareDifference) como parâmetro, enquanto o