Академический Документы
Профессиональный Документы
Культура Документы
A pesar del hecho de que un objeto de clase derivada tambin es un objeto de la clase base, el tipo
de la clase derivada y el tipo de la clase base son diferentes. En una herencia pblica, los objetos
de la clase derivada tiene miembros que corresponden a cada uno de los miembros de la clase
base; pero recuerde que la clase derivada puede tener ms miembros que la clase base. La
asignacin en la otra direccin no est permitida, debido a que la asignacin de un objeto de la
clase base a un objeto de la clase derivada dejara indefinidos los miembros adicionales de la clase
derivada. Aunque dicha asignacin no est permitida de modo natural, podra hacerse legtima
al proporcionar un operador de asignacin sobrecargado apropiado y/o un constructor de
conversin.
Asignar un objeto de clase derivada a un objeto de su clase base correspondiente, y luego intentar
hacer referencia a miembros exclusivos de la clase derivada en el nuevo objeto de la clase base, es
un error de sintaxis.
1.- Hacer referencia a un objeto de la clase base con un apuntador de la clase base es directo.
2.- Hacer referencia a un objeto de la clase derivada con un apuntador de la clase derivada es
directo.
3.- Hacer referencia a un objeto de la clase derivada con un apuntador de la clase base es seguro,
ya que el objeto de clase derivada tambin es un objeto de su clase base. Dicho cdigo solamente
puede hacer referencia a los miembros de la clase base. Si este cdigo hace referencia a los
miembros que son solo de la clase derivada, a travs del apuntador a la clase base, la
computadora reportara un error de sintaxis.
4.- Hacer referencia a un objeto de la clase base con un apuntador de la clase derivada, es un error
de sintaxis. El apuntador de la clase derivada primero debe hacer la conversin a un apuntador de
la clase base.
Convertir un apuntador de clase base en un apuntador de clase derivada puede provocar errores si
dicho apuntador se utiliza para hacer referencia a un objeto de la clase base que no tiene los
miembros requeridos en la clase derivada.
Por conveniente que pueda ser tratar a los objetos de clases derivadas como objetos de clase
base, y poder manipular todos estos objetos mediante apuntadores de clase base, existe un
problema. Por ejemplo, en un sistema de nomina nos gustara poder recorrer una lista ligada de
empleados y calcular el pago semanal de cada persona. Pero el uso de apuntadores de la clase
base solamente permite al programa llamar a la rutina de clculo de nomina de la clase base (si
existiera dicha rutina en la clase base). Necesitamos una forma de invocar la rutina que calcule la
nomina apropiada para cada objeto, ya sea un objeto de la clase base o un objeto de la clase
derivada, y hacer esto simplemente con el uso del apuntador a la clase base. La solucin es utilizar
funciones virtuales y polimorfismo.
Al declarar una clase como una extensin de otra clase, los objetos de la clase
derivada son a su vez objetos de la clase base. Si, por ejemplo, tenemos la
jerarqua:
Persona
Estudiante Profesor
Parte correspondiente
a Persona