Sobrecarga de Funciones en C++: Guía Práctica
Sobrecarga de Funciones en C++
Descubre cómo C++ te permite definir múltiples funciones con el mismo nombre pero diferentes firmas, ilustrado con ejemplos prácticos.
En C++, dos funciones pueden compartir el mismo nombre siempre que sus listas de parámetros difieran en tipo, número u orden. Estas variantes se llaman funciones sobrecargadas.
Por ejemplo:
// Mismo nombre, diferentes argumentos int test() { } int test(int a) { } float test(double a) { } int test(int a, double b) { }
Las cuatro declaraciones anteriores representan un conjunto de sobrecarga válido. Ten en cuenta que los tipos de retorno son irrelevantes para la resolución de sobrecarga; solo importa la lista de parámetros. Por ejemplo:
// Error de compilación: firmas idénticas int test(int a) { } double test(int b){ }
Aquí, ambas funciones tienen el mismo nombre, mismo tipo y mismo número de argumentos, por lo que el compilador rechaza el duplicado.
Ejemplo 1: Sobrecarga con Diferentes Tipos de Parámetros
// Calcular valor absoluto para int y float #include <iostream> using namespace std; // versión float float absoluto(float var){ return (var < 0.0f) ? -var : var; } // versión int int absoluto(int var){ return (var < 0) ? -var : var; } int main(){ cout << "Valor absoluto de -5 = " << absoluto(-5) << endl; cout << "Valor absoluto de 5.5 = " << absoluto(5.5f) << endl; return 0; }
Salida
Valor absoluto de -5 = 5 Valor absoluto de 5.5 = 5.5
Este programa sobrecarga absoluto(); el compilador selecciona la versión apropiada basada en el tipo del argumento.
Ejemplo 2: Sobrecarga con Diferente Número de Parámetros
#include <iostream> using namespace std; // Versión de dos parámetros void mostrar(int var1, double var2){ cout << "Entero: " << var1; cout << " & Double: " << var2 << endl; } // Versión de un parámetro double void mostrar(double var){ cout << "Double: " << var << endl; } // Versión de un parámetro int void mostrar(int var){ cout << "Entero: " << var << endl; } int main(){ int a = 5; double b = 5.5; mostrar(a); mostrar(b); mostrar(a, b); return 0; }
Salida
Entero: 5 Double: 5.5 Entero: 5 & Double: 5.5
La llamada a mostrar() resuelve a la sobrecarga correcta basada en el número y tipo de argumentos.
Nota: Las funciones de biblioteca estándar como sqrt() están fuertemente sobrecargadas, aceptando int, float, double y más, proporcionando flexibilidad a los desarrolladores.
Lenguaje C
- Dominando la Sobrecarga de Métodos en C#: Conceptos, Ejemplos y Buenas Prácticas
- Dominando la Sobrecarga de Constructores en C#
- Dominando los Operadores en C++: Guía Completa con Ejemplos Prácticos
- Comentarios en C++: Mejores Prácticas para Código Legible y Mantenible
- Cómo Pasar Arrays a Funciones en C++: Guía Práctica
- Funciones y clases amigas en C++: dominando el control de acceso
- Cómo pasar arrays 1D y 2D a funciones en C – Guía práctica
- Sobrecarga de operadores en C++: Guía práctica con ejemplos de código
- Funciones en C++ Explicadas con Ejemplos de Código Prácticos
- Dominando funciones en C: Estructura, declaración y mejores prácticas
- Dominando la Sobrecarga en C++: Funciones y Operadores Explicados