$ touch polimorfismo.CC
$ nano polimorfismo.CC
Ejemplo 01: sobrecarga de funciones
Cuando sus argumentos son únicos, puede utilizar dos funciones principales con el mismo título en C++. Varios métodos se llaman en función de la cantidad y el tipo de parámetros, y este concepto se conoce como sobrecarga de funciones. Hemos comenzado nuestro primer ejemplo con el espacio de nombres estándar "STD" y el encabezado de entrada-salida de "iOStream". Se definen tres funciones "val" definidas por el usuario, cada una con una sola declaración de cout. La primera función contiene un parámetro de tipo entero, el segundo contiene el parámetro de tipo doble y el último contiene dos parámetros de doble tipo. Las dos primeras funciones "Val" simplemente obtienen valor del método main () y lo muestran en el shell a través de la instrucción Cout. El tercero es obtener dos valores de doble tipo de main () y mostrar la suma de ambos valores en el shell con la ayuda de la cláusula Cout. La función main () simplemente llama a tres métodos de los mismos nombres uno tras otro pasando diferentes valores.
#incluir
usando el espacio de nombres STD;
int val (int n1)
cout <<"Integer: "<< n1 <
Val doble (doble N1)
cout <<"Double: "<< n1 <
Val doble (doble n1, doble n2)
cout << "Sum: "<< n1+n2<
int main ()
val (10);
Val (9.25);
Val (4.1, 8.23);
regresar 0;
La compilación de este código C ++ es exitosa usando el compilador G ++ en el shell.
$ G ++ polimorfismo.CC
Después de ejecutar el código, tenemos los valores que se muestran en la consola a continuación.
ps ./a.afuera
Ejemplo 02: sobrecarga del operador
La sobrecarga del operador es similar a la sobrecarga de métodos porque utiliza el mismo signo pero varios operandos para distintos métodos de operador. Entonces, hemos comenzado este ejemplo declarando una nueva clase "A" después del espacio de nombres y la biblioteca de encabezado. La clase A contiene un miembro de datos privados del tipo entero "V" y una función de constructor A () utilizada para inicializar la variable "V" con un valor de 5. Aquí viene la función del operador para incrementar el valor de "V" por 3. Como muestra su nombre, el operador "+" se ha sobrecargado aquí. La función show () está aquí para mostrar el valor incrementado de una variable "V."Tras la creación de un objeto, el constructor a () se ejecutará. El objeto se ha utilizado para llamar a la función del operador "++". El OBJ se utiliza nuevamente para llamar a la función show () para mostrar el valor incrementado.
#incluir
usando el espacio de nombres STD;
clase A
privado:
En televisión;
público:
A (): V (5)
Operador void ++ ()
V = V + 3;
void show ()
cout << "Value after increment: " << v << endl;
;
int main ()
Un obj;
++obj;
obj.espectáculo();
regresar 0;
Después de la compilación, no tenemos errores. El valor incrementado de la variable "V" se ha mostrado en nuestra pantalla terminal al ejecutar este código.
$ G ++ polimorfismo.CC
ps ./a.afuera
Ejemplo 03: Función anular
La clase base y sus subclases descendientes pueden tener los mismos métodos de nombre. Cuando usamos una instancia de la subclase para invocar el método, la función de la clase extendida se ejecuta en lugar de la clase principal. Como resultado, se ejecutarán varias funciones dependiendo del objeto que invoque el método. En C ++, esto se conoce como método anular. Entonces, hemos inicializado tres clases en el código. La clase A es la clase madre de las clases de niños B y C. Todas las clases tienen la misma función de nombre, "show ()", que muestra sus especificaciones a través de la instrucción Cout. El método Main () ha creado 3 objetos para 3 clases para llamar a las funciones respectivas.
#incluir
usando el espacio de nombres STD;
clase A
público:
void show ()
cout << "Base class A… " << endl;
;
Clase B: Public A
público:
void show ()
cout << "Derived class B… " << endl;
;
Clase C: Public a
público:
void show ()
cout << "Derived class C… " << endl;
;
int main ()
A o1;
O1.espectáculo();
B o2;
O2.espectáculo();
C o3;
O3.espectáculo();
regresar 0;
Tenemos todos los métodos ejecutados de todas las clases al ejecutar este archivo de código.
Ejemplo 04: Funciones virtuales
Si usamos un "puntero" de referencia de clase base para referirnos a un objeto de clase derivada, es posible que ni siquiera sea capaz de eludir los métodos en c++. En estas circunstancias, el uso de métodos virtuales en la clase principal asegura que el método se puede anular. Entonces, hemos creado una clase de padres A con su clase B. Ambas clases tienen las mismas funciones de nombre, pero la función de clase principal contiene la palabra clave "Virtual."En Main (), el objeto de la clase B" B "se ha utilizado como referencia al objeto de puntero de la clase principal" A "" A."
#incluir
usando el espacio de nombres STD;
clase A
público:
virtual void show ()
cout << "Base class A… " << endl;
;
Clase B: Public A
público:
void show ()
cout << "Derived class B… "regresar 0;
Al ejecutar este código, el método de clase derivado se ha ejecutado utilizando la palabra clave virtual en la función del mismo nombre definida por el usuario de la clase principal.
$ G ++ polimorfismo.CC
ps ./a.saltar
Conclusión:
Se trataba de usar el polimorfismo en C ++ usando algunos de sus conceptos básicos. Para que sea suave, tenemos sobrecarga de funciones cubierto, anulación de funciones, sobrecarga del operador y concepto de función virtual. Esperamos los mejores comentarios para este trabajo.