Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


herencia

Preguntas y respuestas sobre el lenguaje de programacion C/C++

herencia

Notapor m@x_burns el Sab Jun 18, 2005 12:15 pm

hola a todos,
estoy teniendo unos problemas con herencia,

una clase puede ser instanciable y a la vez heredar miembros datos o funciones??

las funciones virtuales igualadas a 0
Ejm: virtual funcion()=0

esas funciones seran implementadas por las clases hijas??

gracias,

salu2
m@x_burns
Novato
Novato
 
Mensajes: 5
Registrado: Dom May 29, 2005 7:35 pm
Ubicación: arequipa :=)

RE: herencia

Notapor yalmar el Sab Jun 18, 2005 6:49 pm

una clase puede ser instanciable y a la vez heredar miembros datos o funciones??

Naturalmente, una clase puede ser instanciable si esta no contiene funciones virtuales puras. Puede heredar miebros dato de su clase padre, desde que estos sean declarados como publicos o protegidos, de lo contrario no puede heredar.
las funciones virtuales igualadas a 0
Ejm: virtual funcion()=0

cuando las funciones son igualadas a 0 son funciones virtuales puras, y significa que no será posible instanciar esta clase. Clases con funciones virtuales puras son llamadas clases abstractas y no pueden ser instanciadas.
esas funciones seran implementadas por las clases hijas??

Esas funciones deven ser necesariamente implementadas en las clases hijas como "virtual [data type] function(){ ... }" o "[data type] function(){ ... }", note que en el caso de usar virtual podemos especializarla o reescribirla en cada clase descendiente.
Avatar de Usuario
yalmar
Programador Experimentado
Programador Experimentado
 
Mensajes: 251
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

Re: herencia

Notapor waltico el Lun Jun 27, 2005 4:06 pm

Hola solo queria acotar la respuesta de Mr. Yalmar.

Con un par ejemplo bastará señor yalmar?

virtual function() = 0; // forma incorrecta!
virtual [tipo dato] function() = 0; // forma correcta!.

ejemplo:
>> virtual double function() = 0;

Bueno solo me remito a lo que puedo responder, espero que halla aclarado la duda de m@x_burns.
Ultima edición por waltico el Mié Jun 29, 2005 12:06 am, editado 1 vez en total
by: Oscar Walther Huanca Torres
Web: http://waltico.wordpress.com
E-Mail: walticogt + yahoo.com
Avatar de Usuario
waltico
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 139
Registrado: Sab Jun 21, 2003 4:04 pm
Ubicación: Puno - Perú

Re: herencia

Notapor yalmar el Lun Jun 27, 2005 8:04 pm

me parece que este señor waltico no sabe lo que quiere expresar en su comentario, a pesar de que esta muy mal escrito, lo poco que pude entender de su comentario confunde mas la pregunta original.

Seamos serios al responder por favor.
Avatar de Usuario
yalmar
Programador Experimentado
Programador Experimentado
 
Mensajes: 251
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

Re: herencia

Notapor latindeveloper el Mar Jun 28, 2005 9:07 am

Por ejemplo si tienes una clase VehiculoGenerico como esta:

Código: Seleccionar todo
class VehiculoGenerico
{
  protected:
      int color;
  public:
   virtual void Encender() = 0;
   virtual void Apagar() = 0;
   virtual void Mover() = 0;
};


Lo que podras hacer es implementar clases "hijas" basadas en VehiculoGenerico , pero el comportamiento de las funciones es diferente en cada clase "hija".

Código: Seleccionar todo
class Automovil: public VehiculoGenerico
{
  public:
   virtual void Encender() ;
   virtual void Apagar();
   virtual void Mover();
};


Las clases virtuales puras no pueden ser instanciadas. La clase Automovil ya tiene como miembro a int color.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Re: herencia

Notapor yalmar el Mar Jun 28, 2005 10:07 pm

Es impresionante como responden sin saber.
Por ejemplo
Las clases virtuales puras no pueden ser instanciadas ...

de donde sacaron "clases virtuales puras". Lo que realmente existe son las "funciones virtuales puras", y son de la forma.
Código: Seleccionar todo
virtual [data type] function([params]) = 0;

las que son propias de una "clase abstracta".
Finalmente, una clase que tiene al menos tiene una "función virtual pura" es una "clase abstracta".

Con esto no trato de hacer polémica y espero que no se molesten, pero no se trata de responder lo que les parece.

Yalmar.
Avatar de Usuario
yalmar
Programador Experimentado
Programador Experimentado
 
Mensajes: 251
Registrado: Mié Jun 09, 2004 4:13 pm
Ubicación: Brasil

Re: herencia

Notapor latindeveloper el Mar Jun 28, 2005 11:08 pm

yalmar escribió:Es impresionante como responden sin saber.

Si me atrevo a responder es por que de alguna manera me siento capaz de ayudar a quien lo necesite.

yalmar escribió:de donde sacaron "clases virtuales puras".

Admito mi error en los terminos, debí decir "las clases abstractas no son instanciables", seguramente estaba estresado por la carga de trabajo, de todas maneras lo hice por ayudar.

yalmar escribió:Con esto no trato de hacer polémica y espero que no se molesten, pero no se trata de responder lo que les parece.

Bastaba con decir que hubo un error en la terminologia. Nadie es perfecto com tu yalmar.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Re: herencia

Notapor waltico el Mié Jun 29, 2005 12:15 am

yalmar escribió:me parece que este señor waltico no sabe lo que quiere expresar en su comentario, a pesar de que esta muy mal escrito, lo poco que pude entender de su comentario confunde mas la pregunta original.

Te soy sincero pero señor Yalmar¨Ponce, decir esta muy mal escrito.. creo que debistes decir... Tu respuesta no ayuda a solucionar el problema, quice decir: Agregando a tus comentarios de respuesta sería- le falto ejemplos-, no todos entendemos el formalizmo de tu respuesta, pues eso esta en la ayuda de cualquier compilador.

yalmar escribió:Seamos serios al responder por favor.

Tienes mucha razon!, esperemos que sigas asi Yalmar.
by: Oscar Walther Huanca Torres
Web: http://waltico.wordpress.com
E-Mail: walticogt + yahoo.com
Avatar de Usuario
waltico
Usuario Muy Activo
Usuario Muy Activo
 
Mensajes: 139
Registrado: Sab Jun 21, 2003 4:04 pm
Ubicación: Puno - Perú


Volver a C/C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados