¿Cómo funciona el polimorfismo en c ++

Como straddler valla, C ++ soporta tanto temprana como tardía de unión. Cualquier lenguaje de programación determinado puede soportar ya sea temprana o tardía unión en base a los caprichos de sus desarrolladores. idiomas más antiguos como C tienden a apoyar el enlace anticipado solo. idiomas recientes como Java y C # sólo admiten el enlace en tiempo.

Video: 126. Programación en C++ || POO || Conceptos básicos de Programación Orientada a Objetos (POO)

Es posible que se sorprenda de que el valor predeterminado para C ++ es el enlace anticipado. La salida de la OverloadOverride programar la forma en que aparece es la siguiente:

Estamos en Estudiante :: calcTuitionWe`re en Estudiante :: calcTuitionPress Intro para continuar ...

La razón es simple, aunque un poco anticuado. En primer lugar, C ++ tiene que actuar tanto como C como sea posible de manera predeterminada para mantener la compatibilidad hacia arriba con su predecesor. En segundo lugar, el polimorfismo añade una pequeña cantidad de sobrecarga para cada llamada a la función, tanto en términos de almacenamiento de datos y el código necesario para realizar la llamada.

Video: Exemplo de Polimorfismo no C++

Los fundadores de C ++ estaban preocupados de que cualquier sobrecarga adicional sería utilizado como una razón para no adoptar C ++ como lenguaje del sistema de elección, por lo que hicieron el más eficiente principios de la unión del defecto.

Para realizar una función miembro polimórfica, el programador debe marcar la función de palabras clave con el C ++ virtual, como se muestra en la siguiente modificación a la declaración en el OverloadOveride programa:

Video: 031.- Curso de C++. Polimorfismo y Funciones Virtuales

Estudiante clase {public: virtual de vacío calcTuition () {cout lt; lt; "Estamos en Estudiante :: calcTuition" lt; lt; endl -}} -

la palabra clave virtual que dice que C ++ calcTuition () es una función miembro polimórfico. Es decir, declarar calcTuition () medios virtuales que llama a él estarán obligados tarde si hay alguna duda en cuanto al tipo de tiempo de ejecución del objeto con el cual calcTuition () se llama.

la ejecución de la OverloadOveride programa con calcTuition () genera declarado virtual de la siguiente salida:

Estamos en Estudiante :: calcTuitionWe`re en GraduateStudent :: calcTuitionPress Intro para continuar ...

Si se siente cómodo con el depurador que viene con su entorno C ++, que realmente debería de un solo paso a través de este ejemplo. Es tan bueno para ver el programa de un solo paso en Estudiante :: calcTuition () la primera vez que fn () se llama, pero en GraduateStudent :: calcTuition () en la segunda llamada. No se puede apreciar realmente el polimorfismo hasta que lo he probado.

Es necesario para declarar la función virtual sólo en la clase base. El “virtualidad” se lleva a la subclase de forma automática. A veces, sin embargo, los programadores siguen el estándar de codificación de declarar la función virtual en todas partes (virtualmente).

Artículos Relacionados