Tecnología

Inicio

Redefinir métodos en C ++

Redefinir métodos en C ++


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 método basado en diferentes parámetros, tiene dos opciones. El programador puede sobrecargar la función con el mismo nombre, pero cambiando los argumentos del método. Además, si el programador utiliza una clase derivada él o ella puede anular una función de una clase base para realizar diferentes funciones.

La sobrecarga de métodos

Una vez que un programador declara un método, ese nombre por lo general no 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 podría 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 entero como argumento no podría existir, sin importar el código dentro del método. Sin embargo, otro método con el mismo nombre y diferentes argumentos podría existir:

int calcular (doble x)

El tipo o argumento cuando se llama al método sería decidir qué método se ejecuta.

limitaciones

Existen limitaciones en cuanto a cómo funciona la sobrecarga de métodos en C ++. Con el fin de sobrecargar un nombre de método, los argumentos deben utilizar diferentes tipos de datos, o diferir en la cantidad de argumentos designados. Los métodos que devuelven valores diferentes, pero que comparten un nombre y un argumento idéntico lista, no están permitidos en C ++. Tampoco se permiten métodos con nombres y argumentos que sólo se diferencian debido a un nombre de tipo diferente (o emita un tipo de datos existente un nombre diferente) idénticos. Por ejemplo:

typdef int fake_int;

int write (int x)

doble escritura (int x)

int escritura (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 forma de sobrecargar un método es a través de la derivación clase. Al construir la clase, un programador puede hacer una funcionalidad clase herede de otra clase. El (derivado) de clase que hereda puede utilizar los métodos de la clase que hereda de (clase base). Una clase base (clase X) podría tener un método de "imprimir" definido. Otra clase (Y clase) que se deriva de la clase X también tiene acceso a la impresión. Sin embargo, la clase Y también podría 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:

Primera clase (

público:

int x;

int returnX () {

x regresar;

}

};

A continuación, una clase derivada que redefine el "returnX ()" método:

Segunda clase: En primer lugar público {

público:

int returnX () {

volver x + 1;

}

};

La clase "Segundo" tiene acceso a la variable "x" y el método "returnX ()" que forman parte de la clase "Primera". Sin embargo, Segunda 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 de retorno será x + 1.