Como escrever e usar objetos de função em C ++

Como escrever e usar objetos de função em C ++
Objetos de função, Também conhecido como functores, são uma maneira de escrever código reutilizável em C ++ que fornece uma abordagem mais flexível para a personalização do algoritmo. Um objeto que pode ser usado como uma função e responde a chamadas da mesma maneira que uma função padrão é conhecida como um objeto de função. Eles podem ser usados ​​para implementar operações complexas em coleções ou para definir etapas de processamento genericamente. O ensaio a seguir fornecerá um guia detalhado sobre como escrever e usar objetos de função em c++.

Esses objetos se comportam como funções, mas com estado e funcionalidade adicionais. Eles podem ser usados ​​para fornecer mais flexibilidade e personalização do que uma função simples, e são comumente usados ​​em contêineres como Std :: Sort e STD :: find_if.

Como escrever objetos de função?

Para escrever um objeto de função, Precisamos criar uma classe que sobrecarregue o operador de chamada de função (). As instâncias da classe podem ser invocadas como se fossem funções convencionais graças a este operador, que é um componente crucial de um objeto de função. A sintaxe para sobrecarregar o operador é:

classe myfunctionObject
público:
ReturnType Operator () (Paramtype1 P1, Paramtype2 P2,…)
// implementação

;

Onde ReturnType é o tipo de retorno da função e Paramtype1, Paramtype2, e assim por diante são os tipos de parâmetros de função. A implementação do operador () deve executar a lógica do objeto de função.

Como usar objetos de função em c++

Depois de definirmos uma classe que sobrecarrega o operador de chamada de função e executa a lógica do objeto de função, Podemos usá -lo da seguinte forma:

#incluir
classe quadrada
público:
int operator () (int x) const
retornar x * x;

;
int main ()
Quadrado quadrado;
INT número = 5;
int resultado = quadrado (número);
std :: cout << "The square of " << number << " is " << result << std::endl;
retornar 0;

No exemplo acima, construímos a classe quadrada, cuja função operadora () retorna o quadrado de um número inteiro x quando passado como um argumento. Criamos um objeto quadrado chamado um quadrado na função Main () e o usamos para encontrar o quadrado de um número inteiro.

Saída

Vantagens dos objetos de função

Objetos de função Forneça várias vantagens sobre as funções tradicionais em C++. Eles oferecem mais flexibilidade ao usar algoritmos porque podem ser personalizados para executar qualquer operação, diferentemente das funções tradicionais. Eles também podem conter um estado, que pode ser útil para manter informações entre chamadas, enquanto as funções tradicionais são totalmente apátridas.

Adicionalmente, objetos de função pode ser passado como argumentos para outras funções, o que pode tornar o código mais conciso e mais fácil de ler. Eles também nos permitem usar recursos C ++, como modelos para escrever código genérico que funciona com diferentes tipos de dados, iteráveis ​​e algoritmos.

Uma vantagem de usar um objeto de função Em vez de uma função simples é que ele pode ter estados ou funcionalidade adicionais que podem ser personalizados.

Conclusão

Objetos de função No C ++ são uma técnica útil para escrever código reutilizável que oferece maior flexibilidade do que as funções convencionais. Você pode usá -los criando uma classe que substitui o operador de chamada de função, que pode ser transmitido como argumentos para algoritmos que usam objetos de função como entradas. Usando objetos de função tem as vantagens de ser flexível, com estado. Com objetos de função, Podemos escrever um código mais expressivo, compacto e compreensível que também seja mais fácil de manter.