Sobrecarga de plantillas de funciones en C++

Modelo:

  • Una plantilla es una herramienta que reduce los esfuerzos de escribir el mismo código, ya que las plantillas se pueden usar en esos lugares.
  • Una función de plantilla se puede sobrecargar con una función que no sea de plantilla o con una plantilla de función ordinaria.

Sobrecarga de funciones : en la sobrecarga de funciones , la función puede tener la misma definición, pero con diferentes argumentos. A continuación se muestra el programa C++ para ilustrar la sobrecarga de funciones:

C++

// C++ program to demonstrate the
// function overloading
#include <bits/stdc++.h>
using namespace std;
  
// Function to calculate square
void square(int a)
{
    cout << "Square of " << a
         << " is " << a * a
         << endl;
}
  
// Function to calculate square
void square(double a)
{
    cout << "Square of " << a
         << " is " << a * a
         << endl;
}
  
// Driver Code
int main()
{
    // Function Call for side as
    // 9 i.e., integer
    square(9);
  
    // Function Call for side as
    // 2.25 i.e., double
    square(2.25);
    return 0;
}
Producción:

Square of 9 is 81
Square of 2.25 is 5.0625

Explicación:

  • En el código anterior, el cuadrado está sobrecargado con diferentes parámetros.
  • El cuadrado de función también se puede sobrecargar con otros argumentos, lo que requiere el mismo nombre y diferentes argumentos cada vez.
  • Para reducir estos esfuerzos, C++ ha introducido un tipo genérico llamado plantilla de función .
     

Plantilla de función : la plantilla de función tiene la misma sintaxis que una función normal, pero comienza con una plantilla de palabra clave seguida de parámetros de plantilla encerrados entre corchetes angulares <>.

plantilla <clase T>

T functionName(T arguments)
{
     // Definición de la función
     ………. …… ….. …….
}
donde T es un argumento de plantilla que acepta diferentes argumentos y class es una palabra clave. 

Sobrecarga de función de plantilla:

  • El nombre de las plantillas de funciones es el mismo pero se llama con diferentes argumentos, lo que se conoce como sobrecarga de plantillas de funciones .
  • Si la plantilla de función es con la plantilla ordinaria, el nombre de la función sigue siendo el mismo pero el número de parámetros es diferente.
  • Cuando una plantilla de función se sobrecarga con una función que no es de plantilla, el nombre de la función sigue siendo el mismo pero los argumentos de la función son diferentes.

A continuación se muestra el programa para ilustrar la sobrecarga de la función de plantilla utilizando una función explícita:

C++

// C++ program to illustrate overloading
// of template function using an
// explicit function
#include <bits/stdc++.h>
using namespace std;
  
// Template declaration
template <class T>
  
// Template overloading of function
void display(T t1)
{
    cout << "Displaying Template: "
         << t1 << "\n";
}
  
// Template overloading of function
void display(int t1)
{
    cout << "Explicitly display: "
         << t1 << "\n";
}
  
// Driver Code
int main()
{
    // Function Call with a
    // different arguments
    display(200);
    display(12.40);
    display('G');
  
    return 0;
}
Producción:

Explicitly display: 200
Displaying Template: 12.4
Displaying Template: G

Publicación traducida automáticamente

Artículo escrito por tarunsinghwap7 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *