C/Visual C - unA pequeña duda

 
Vista:

unA pequeña duda

Publicado por RAFAEL (17 intervenciones) el 31/08/2003 01:50:19
alguien me puede explicar el manejo de herencia y de la palabra reservada virtual se lo agracederia muchisimo .
de antemano gracias.....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:unA pequeña duda

Publicado por Xx Argentino Sexual xX (69 intervenciones) el 31/08/2003 18:20:28
Brevemente es algo asi: En una clase vos definis metodos, estos pueden ser privados o publicos, si son privados solo los puede utilizar esa clase exclusvamente, si son publicas los vas a heredar a los hijos de esa clase. Despues el virtual se utiliza para heredar metodos q nos estan definidos en esa clase, y q los vas a definir en los hijos, esto se utiliza para metodos q tengan distintas implementaciones. Por ejemplo:
Si tenes la superclase (o clase padre) "coleccion", q es una secuencia de datos, y tiene dos hijos, la clase pila y la clase fila (o cola), en la clase padre vas a definir los metodos q vas a heredar basicos q son: agregar, eliminar, etc. Pero los tenes q definir con virtual porq esos metodos en los hijos se comportan distinto, en una pila agregas al principio y en una fila al final. Entonces vos en la clase pila implementas el agregar de la clase pila como debe ser y en la clase fila tb.
Esa es la razon por la q se usa el virtual
Espero q t haya servido. Cualquier cosa, escribime un mail.

Switching loders
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Sobre virtual

Publicado por Jalbo (54 intervenciones) el 01/09/2003 13:58:02
Hola:
Si en la superclase no declaras como virtual a esas funciones, que podría pasar en las clases hijas?

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre virtual

Publicado por BluSky (11 intervenciones) el 01/09/2003 14:59:37
Pues pasa que si tienes un puntero a una clase derivada, cuando hagas la llamada a la función, se ejecutará la de la clase base en vez de la derivada.
Por ejemplo:
class A {
public:
virtual Funcion1() {cout << "Funcion en clase base";};}

class B: public A {
public:
Funcion1() {cout <<"Funcion en clase derivada";}};

void main() {
A *Puntero=new B;
Puntero->Funcion1()} //Escribe "Funcion en clase derivada" por haberse declarado "Virtual". Si no, mostraría la de clase base ya que "Puntero" es un objeto de la clase A
Espero haberme explicado
Saludos
Sebas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Sobre virtual

Publicado por Xx Argentino Sexual xX (69 intervenciones) el 02/09/2003 23:30:06
Respondiendo a la duda de jalbo... Si no pones virtual, tenes q definir el metodo en esa clase padre, no pones definirla en el hijo. Y de esta forma vas a heredar el comportamiento del padre, no pudiendo definir el propio comportamiento del hijo. Nada mas.

Switching Loders.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar