Sobrecarga
de funciones
La
sobrecarga (overload) de funciones consiste en declarar y definir
varias funciones distintas que
tienen un
mismo nombre. Dichas funciones se definen de forma diferente. En el momento
de la
ejecución
se llama a una u otra función dependiendo del número y/o tipo de los argumentos
actuales
de la
llamada a la función. Por ejemplo, se pueden definir varias funciones para
calcular el valor
absoluto
de una variable, todas con el mismo nombre abs(), pero cada una
aceptando un tipo de
argumento
diferente y con un valor de retorno diferente.
La
sobrecarga de funciones no admite funciones que difieran sólo en el tipo del
valor de
retorno,
pero con el mismo número y tipo de argumentos. De hecho, el valor de retorno no
influye
en la
determinación de la función que es llamada; sólo influyen el número y tipo de
los argumentos.
Tampoco
se admite que la diferencia sea el que en una función un argumento se pasa por
valor y en
otra
función ese argumento se pasa por referencia.
A
continuación se presenta un ejemplo con dos funciones sobrecargadas, llamadas
ambas
string_copy(),
para copiar cadenas de caracteres. Una de ellas tiene dos argumentos y la otra
tres.
Cada
una de ellas llama a una de las funciones estándar del C: strcpy() que
requiere dos
argumentos,
y strncpy() que requiere tres.
El número de argumentos en la
llamada determinará la
función
concreta que vaya a ser ejecutada:
//
Ejemplo de función sobrecargada
#include
<iostream.h>
#include <string.h>
inline void
string_copy(char *copia, const char *original)
{
strcpy(copia, original);
}
inline void
string_copy(char *copia, const *original, const int longitud)
{
strncpy(copia, original,
longitud);
}
static char string_a[20],
string_b[20];
void main(void)
{
string_copy(string_a,
"Aquello");
string_copy(string_b,
"Esto es una cadena", 4);
cout << string_b
<< " y " << string_a;
//
La última sentencia es equivalente a un printf() de C
}
No hay comentarios.:
Publicar un comentario
Es muy importante tu comentarios: