En circunstancias normales , los métodos en C + + no pueden compartir un nombre. Esto provoca errores al introducir la posibilidad de confusión en referencias a métodos. Un programador que desea utilizar el mismo nombre para un método , pero que redefinir el método sobre la base de diferentes parámetros , tiene dos opciones . El programador puede sobrecargar la función con el mismo nombre, pero cambiando los argumentos del método. También , si el programador está utilizando una clase derivada él o ella puede reemplazar una función de una clase base para llevar a cabo diferentes funciones . Sobrecarga de Métodos
vez un programador declara un método , ese nombre por lo general no se puede designar a otro método con el código diferente en su interior. La exclusión a esto es cuando los argumentos del método difieren . Por ejemplo , un programador puede definir el método de " calcular " para tomar un entero como argumento :
int calcular ( int x )
De acuerdo con las reglas de C + + , otro método llamado " calcular " que tiene un número entero como argumento no podría existir , independientemente del código dentro del método . Sin embargo , otro método con el mismo nombre y diferentes argumentos podría existir :
int calcular (double x )
El tipo o argumento cuando se llama al método sería decidir qué método se ejecuta
. existen
Limitaciones
limitaciones en cuanto a cómo la sobrecarga de métodos obras en C + + . Para sobrecargar un nombre de método , los argumentos deben utilizar diferentes tipos de datos , o difieren en la cantidad de argumentos designados. Los métodos que devuelven valores diferentes , pero que comparten un nombre y una lista de argumentos idénticos, no están permitidos en C + + . Tampoco se permiten métodos con el mismo nombre y argumentos que sólo se diferencian por un nombre de tipo diferente ( o dar un tipo de datos existente un nombre diferente) . Por ejemplo :
typdef int fake_int ;
escritura int ( int x )
doble write ( int x )
escritura int ( fake_int x)
Ninguna de estas tres definiciones de método sigue las reglas de la sobrecarga de métodos y devolverá un error.
Derivación
Otra manera de sobrecargar un método es a través de derivación de clase . Cuando la construcción de clase , un programador puede hacer que una clase hereda la funcionalidad de otra clase . La clase que hereda (derivado ) puede utilizar los métodos de la clase que hereda de (clase base) . Una clase base ( clase X) podría tener un método "print" definido. Otra clase (clase Y) que se deriva de la clase X también tiene acceso a la prensa . Sin embargo , la clase Y también puede definir su propia versión del método de impresión. En este caso, el método de impresión ejecutada será el definido en la clase Y, a menos que el programador especifica que la versión de la clase X de impresión debe ejecutar.
Ejemplos
un ejemplo de un método redefinido a través de una clase derivada implica dos clases . En primer lugar, la clase base :
clase
First (
público :
int x;
int returnX () {
regreso x;
}
} ;
Entonces , una clase derivada que redefine el " returnX ()" método :
clase
segundo: Primero pública {
público :
int returnX () { return x
1 ;
}
} ;
< p > la clase "II " tiene acceso a la variable "x" y el método " returnX ()" que forman parte de la clase "First" . Sin embargo , Second redefine el método returnX () en su propia definición. Esto significa que cuando un objeto de segunda clase llama al método returnX (), el valor devuelto será x 1 .