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 .