Ejemplos de funciones en C++

Ejemplos De Funciones En C



Una clase de C++ que funciona como una función se llama funtor. Se utiliza la misma sintaxis de llamada a función antigua para invocar los functores. Creamos un objeto que sobrecarga el “operador()” para generar un funtor. También podemos decir que los objetos que pueden interpretarse como una función o como un puntero de función se denominan functores. Al modelar los efectos funcionales utilizando los valores de tipos de datos paramétricos, los 'functores' son extremadamente convenientes. En este artículo, se estudiará en detalle el concepto de funtor junto con los códigos C++.

Ejemplo 1:

El 'iostream' es el archivo de encabezado que incluimos aquí porque tenemos que utilizar las funciones que se declaran en este archivo de encabezado. El archivo de encabezado 'iostream' contiene una declaración de función. El espacio de nombres 'std' también se agrega aquí. Luego, generamos una clase llamada 'FunctorClass'. Debajo de esto, escribimos 'público', que es el constructor público aquí y colocamos la función 'operador()'. Luego, colocamos una oración que queremos mostrar en la pantalla en la declaración 'cout'.

Después de esto, llamamos a la función 'main()' y luego creamos el objeto de 'FunctorClass' con el nombre 'my_functor'. Aquí, llamamos a la función 'my_functor()' para que muestre la declaración que agregamos debajo de la función 'operator()'.







Código 1:



#incluir
usando espacio de nombres enfermedad de transmisión sexual ;
clase ClaseFunctor {
    público :
        vacío operador ( ) ( ) {
            corte << 'La Operación se llama aquí' ;
        }
} ;
En t principal ( ) {
FunctorClass mi_functor ;
mi_functor ( ) ;

    devolver 0 ;
}

Producción:



La línea que agregamos en la función 'operator()' de 'FunctorClass' se muestra aquí utilizando el objeto functor 'my_functor'.





Ejemplo 2:

Incluimos el archivo de encabezado 'iostream' aquí porque alguna declaración de función está contenida en el archivo de encabezado 'iostream'. También se inserta el espacio de nombres 'std'. A continuación, creamos una clase llamada 'SquareClass'.



Debajo de eso, escribimos 'público', que es el constructor público y colocamos la función 'operador()' del tipo de datos 'int' debajo de él. Pasamos la variable “val” del tipo de datos “int” a esta función “operator()”. Esta función devuelve el resultado de la multiplicación cuando insertamos 'val * val' en la función 'return()' debajo de la función 'operator()'.

Ahora, aquí se llama a la función 'main()'. Luego, el objeto se crea aquí con el nombre 's_functor' de la clase 'SquareFunctor'. Luego, utilizamos el 'cout' que ayuda a representar la información. Después de esto, llamamos al objeto 'my_functor()' aquí como una función y devuelve el resultado de la multiplicación de '5 * 5' ya que agregamos '5' como parámetro al llamarlo.

Código 2:

#incluir
usando espacio de nombres enfermedad de transmisión sexual ;
clase Clase cuadrada {
    público :
        En t operador ( ) ( En t vale ) {
            devolver ( vale * vale ) ;
        }
} ;
En t principal ( ) {
Clase cuadrada s_functor ;
    corte << 'El cuadrado del valor dado es ' << fin ;
    corte << s_función ( 5 ) ;

    devolver 0 ;
}

Producción:

Obtenemos el resultado después de llamar al objeto 'my_functor' de la clase 'SqaureClass' como la función 'my_functor()' y luego pasar '5'. Obtenemos '25' como el cuadrado del número '5'.

Ejemplo 3:

El archivo de encabezado 'iostream' se incluye aquí porque contiene una declaración de función y luego se introduce el espacio de nombres 'std'. Luego se crea la clase “ProductFunctor”. El constructor público, 'público', se escribe debajo y la función 'operador()' del tipo de datos 'int' se coloca debajo de él. Anulamos esta función aquí y le pasamos dos parámetros: 'int var1' e 'int var2'.

Luego, utilizamos el 'retorno' debajo de esto y multiplicamos ambas variables que devuelven el resultado de la multiplicación de ambos números 'var1 * var2'. Luego se llama aquí a la función “main()” y generamos el objeto de clase con el nombre “P_functor” de la clase “ProductFunctor”. Luego, inicializamos una nueva variable con el nombre 'pro_result' y asignamos el objeto 'P_functor' como la función 'P_functor()' después de llamarlo.

Pasamos “28” y “63” como parámetro. Esto multiplicará ambos valores y guardará el resultado en la variable 'pro_result' que imprimimos debajo de esta usando 'cout' y pasando 'pro_result' en ella.

Código 3:

#incluir
usando espacio de nombres enfermedad de transmisión sexual ;
clase ProductoFunctor {
    público :
        En t operador ( ) ( En t var1, En t var2 ) {
            devolver var1 * var2 ;
        }
} ;
En t principal ( ) {
ProductoFunctor P_functor ;
    En t resultado_producto = P_función ( 28 , 63 ) ;
    corte << 'El producto es: ' << resultado_producto << fin ;
    devolver 0 ;
}

Producción:

Obtenemos el producto después de llamar al objeto “P_functor” como función “P_functor()” y pasarle los valores. El producto de esos valores es “1764”.

Ejemplo 4:

En este caso se genera la “GreetingFunctorClass”. Luego, insertamos el constructor 'público' y anulamos la función 'operador()' en este constructor 'público'. Escribimos “¡Hola! Soy un programador de C++ aquí” después de colocar “cout” debajo de la función “operador()”.

De ahora en adelante, llamamos 'principal()'. Creamos el 'g_functor' aquí como el objeto de 'GreetingFunctorClass' y luego llamamos a este objeto 'g_functor' como la función 'g_functor()'. Esto proporciona el resultado que agregamos en la función 'operador()' mientras la anulamos.

Código 4:

#incluir
usando espacio de nombres enfermedad de transmisión sexual ;
usando espacio de nombres enfermedad de transmisión sexual ;
clase SaludoFunctorClase {
  público :    
    vacío operador ( ) ( ) {
      corte << '¡Hola! Soy programador de C++ aquí' ;
    }
} ;
En t principal ( ) {
SaludoFunctorClase g_functor ;
función_g ( ) ;
  devolver 0 ;
}

Producción:

Aquí, podríamos notar que la declaración que agregamos cuando anulamos la función 'operador()' en nuestro código se muestra aquí cuando llamamos al objeto de clase como una función.

Ejemplo 5:

Esta vez se incluye “bits/stdc++.h” ya que contiene todas las declaraciones de funciones necesarias. Luego, el espacio de nombres 'std' se coloca aquí. La clase que creamos aquí es la clase 'incrementFunctor'. Luego, creamos un constructor 'privado' e inicializamos la variable 'int_num' con el tipo de datos 'int'.

Debajo de este, el constructor 'público', colocamos el 'incrementFunctor' y pasamos 'int n1' dentro de él. Luego, escribimos “int_num(n1)” después de colocar el “:”. Luego, anulamos la función que es la función 'operator()' del tipo de datos 'int' y declaramos 'int arrOfNum' aquí. Luego usamos 'return' e insertamos 'int_num + arrOfNum'. Ahora, esto incrementa los valores de 'arrOfNum', les agrega el valor 'int_num' y los devuelve aquí.

Después de invocar 'main()', inicializamos 'arrOfNum' y asignamos diferentes valores enteros aquí. Luego, se inicializa la variable “n1” donde agregamos la función “sizeof” como “sizeof(arrOfNum)/sizeof(arrOfNum[0])”. Después de esto, el 'número de adición' se inicializa con '3'. Ahora, utilizamos la función 'transformar ()'. Esta “transformación()” es lo mismo que crear el objeto de la clase “increamentFunctor” y luego llamar a su objeto. Después de esto, usamos el bucle 'for' y luego 'cout' el 'arrOfNum[i]'.

Código 5:

#incluir
usando espacio de nombres enfermedad de transmisión sexual ;
clase incrementFunctor
{
privado :
    En t número_int ;
público :
    incrementFunctor ( En t n1 ) : número_int ( n1 ) { }
    En t operador ( ) ( En t arrOfNum ) constante {
        devolver número_int + arrOfNum ;
    }
} ;
En t principal ( )
{
    En t arrOfNum [ ] = { 6 , 3 , 2 , 1 , 9 , 0 , 8 } ;
    En t n1 = tamaño de ( arrOfNum ) / tamaño de ( arrOfNum [ 0 ] ) ;
    En t número de suma = 3 ;
transformar ( arrOfNum, arrOfNum + n1, arrOfNum, incrementFunctor ( número de suma ) ) ;

    para ( En t i = 0 ; i < n1 ; i ++ )
        corte << arrOfNum [ i ] << ' ' ;
}

Producción:

El resultado del código se muestra aquí en el que 'incrementFunctor' es el 'Functor' que se utiliza como función.

Ejemplo 6:

En este código, utilizamos el funtor 'mayor' predefinido. Aquí, incluimos cuatro archivos de encabezado diferentes según los requerimos en nuestro código porque las funciones o métodos que necesitamos en nuestro código se declaran en ellos. Luego, después de agregar 'std' y luego llamar a 'main()', inicializamos el vector 'myIntegerVector'. Insertamos algunos valores sin ordenar en este vector. Debajo de esto, aplicamos la función 'ordenar' para ordenar estos valores vectoriales.

Cuando utilizamos esta función, ordena los valores en orden ascendente. Pero aquí utilizamos el 'mayor', que es la función predefinida en C++ que da el resultado de ordenar de manera descendente. Después de esto, mostramos los valores ordenados con la ayuda del bucle 'for' y luego 'cout'.

Código 6:

#incluir
#incluir
#incluir
#incluir
usando espacio de nombres enfermedad de transmisión sexual ;

En t principal ( ) {
vector < En t > miVectorInteger = { 13 , 21 , 19 , 44 , 32 , 42 , 9 , 6 } ;
clasificar ( miVectorInteger. comenzar ( ) , miVectorInteger. fin ( ) , mayor que < En t > ( ) ) ;
    para ( En t vec_num : miVectorInteger ) {
        corte << vec_num << '  ' ;
    }
    devolver 0 ;
}

Producción:

Todos los valores del vector se ordenan de manera descendente con la ayuda del funtor predefinido en C++ que es el funtor 'mayor', y su definición está disponible en el archivo de encabezado 'funcional'.

Conclusión

En este artículo se explora en profundidad el concepto de “functor C++”. Estudiamos que se puede invocar un objeto como una función para sobrecargar una función llamada 'operador()'. Esto se conoce como functor. Se debe proporcionar acceso público para que la sobrecarga del 'operador()' se utilice según lo previsto. Ilustramos diferentes ejemplos en los que utilizamos los 'functores' y el 'functor' predefinido en nuestro código.