Está en la página 1de 4

Sobrecarga, plantillas y polimorfismo

Sobrecarga
La sobrecarga es una característica que ofrece el lenguaje C++ para aplicar una misma
operación, a través de operadores o funciones, a diferentes tipos de datos. Se pueden
sobrecargar operadores, por ejemplo +, *, –, etcétera y funciones definidas por el propio
usuario. La sobrecarga permite generalizar el uso de operadores y funciones. A
continuación, se analizarán estos temas detalladamente.

Sobrecarga de operadores
La sobrecarga de operadores es el proceso de asignar dos o más operaciones al
mismo operador. Es decir, permite asignar una o más funciones adicionales a un
operador estándar, con el fin de que ésta sea llamada según el contexto en el cual se
utilice el operador. Un operador sobrecargado no puede tener parámetros
predeterminados.

Sobrecarga de los operadores de entrada >> y de salida <<


Un caso especial es la sobrecarga de los operadores << y >> utilizados en la salida y
entrada de datos respectivamente. Estos operadores se encuentran en la biblioteca de
C++. En el caso de la entrada de datos del teclado a la aplicación, se establece una
relación entre una referencia a un objeto de la clase istream y una referencia a un
objeto de la clase en la cual se está incluyendo la sobrecarga.
En el caso de la salida de datos de la aplicación a la pantalla, se establece una relación
entre una referencia a un objeto de la clase iostream y una referencia a un objeto de la
clase en la cual se está incluyendo la sobrecarga. La sintaxis es: donde TipoDefUsuario
corresponde al nombre de la clase en la cual se está definiendo la sobrecarga del
operador <
Observe que las funciones que se obtienen al sobrecargar los operadores se declaran
como amigas (friend) de la clase en la cual se insertaron. Esto es para que dichas
funciones, externas a la clase, puedan tener acceso a los miembros privados de la
misma.
Sobrecarga de funciones o métodos
La sobrecarga de funciones es el proceso de definir dos o más funciones, con el mismo
nombre, que difieren únicamente en los parámetros que requieren y en el tipo de
resultado que generan. Este tipo de sobrecarga resulta ser una poderosa.

herramienta de programación. Sin embargo, debe ser cuidadoso en su uso ya que si se


utiliza excesivamente el programa podría resultar poco legible. Además, es importante
considerar que no es posible definir dos funciones que difieran sólo en el tipo de
resultado. Deben hacerlo también en la lista de parámetros.

Plantillas de funciones
Una plantilla de función es un modelo de función que el compilador de C++ usará para
construir diferentes versiones de una misma función, según los tipos de datos que se
especifiquen al invocar a la misma. La plantilla permite escribir funciones que difieren
exclusivamente en el tipo de datos que manejan.

Plantillas de clases
Las plantillas de clases permiten definir versiones de una misma clase que difieren en
el tipo de dato de alguno(s) de sus miembros. Es decir, se crea el modelo de una clase
el cual permitirá definir distintas instancias de la misma para diferentes tipos de datos.
Para declarar una plantilla de clase se usan las palabras reservadas template. El tipo T
se usa en aquellos miembros de la clase cuyos tipos tomarán un valor en el momento
de crear los objetos.
donde tipo indica el tipo de dato que reemplazará todas las ocurrencias de T en la
definición de la clase. Por ejemplo, si quisiera declarar dos objetos de tipo
PlantillaClase, pero uno con el tipo int como tipo de dato, y otro con float.

Polimorfismo
El término polimorfismo hace referencia a la capacidad de adoptar diversas formas. Por
lo tanto, un objeto polimórfico es aquel que tiene diversos aspectos. El polimorfismo
permite que un mismo método adquiera distintos contenidos declarando funciones o
métodos virtuales en la clase base y otras formas de los mismos en las clases
derivadas.
Por medio del polimorfismo se puede definir un solo método para objetos diferentes, es
decir, objetos que son instancias de distintas clases. En C++ el polimorfismo se define
a través de funciones virtuales. Por lo tanto, antes de presentar un ejemplo de
polimorfismo se hará una breve introducción a las funciones virtuales.

Funciones virtuales
Las funciones o métodos virtuales se usan en clases base para indicar que puede
haber múltiples formas de ellas en las clases derivadas. Para indicar que un método es
virtual se antepone la palabra reservada virtual.

Clases abstractas
Una clase abstracta es una clase que se define con el propósito de establecer bases
conceptuales sobre las cuales se definirán otras clases, mismas que podrán ser clases
concretas. Es decir, una clase abstracta no se usará directamente en la solución de un
problema, sino que formará parte del diseño conceptual de la solución. Por lo tanto, en
el programa no se crearán instancias (objetos) de las clases abstractas. Sin embargo,
cabe destacar que las clases derivadas sí heredan sus miembros.
En una clase abstracta pueden incluirse métodos virtuales que requieren ser
especificados en las clases derivadas. Es decir, métodos a los que se les asignará el
contenido en cada clase derivada. Estos métodos reciben el nombre de métodos
virtuales puros y se inicializan con el valor de cero. Si las clases derivadas no los
especifican, entonces se producirá un error.

Moraima José Moreno


100606287

También podría gustarte