Foros del Web » Programación para mayores de 30 ;) » C/C++ »

funcion virtual ortientado a objetos c++

Estas en el tema de funcion virtual ortientado a objetos c++ en el foro de C/C++ en Foros del Web. Buenas, espero que esten bien... bueno tengo una duda respecto a orientado a objetos, especificamente con las funciones virtuales ejemplo: si declaro en mi clase ...
  #1 (permalink)  
Antiguo 14/01/2012, 19:45
 
Fecha de Ingreso: diciembre-2011
Mensajes: 16
Antigüedad: 12 años, 4 meses
Puntos: 0
funcion virtual ortientado a objetos c++

Buenas, espero que esten bien... bueno tengo una duda respecto a orientado a objetos, especificamente con las funciones virtuales


ejemplo:

si declaro en mi clase la funcion virtual

virtual float clase (int x, int y)=0;

me muestra un error, entonces le quite los parametros y ya no me dio error...

mi preguntas es: en mi clase puedo modificar los parametros que recibe mi funcion virtual ?¿?¿¿?¿?¿?¿?¿?¿?¿?¿?¿?¿?¿ bueno, eso es todo... desde ya muchas gracias



Última edición por wachilango; 14/01/2012 a las 19:48 Razón: kitar
  #2 (permalink)  
Antiguo 15/01/2012, 11:41
 
Fecha de Ingreso: diciembre-2011
Ubicación: Crespo - Entre Rios
Mensajes: 155
Antigüedad: 12 años, 4 meses
Puntos: 25
Respuesta: funcion virtual ortientado a objetos c++

para que estas utilizando esa funcion?, porque lo que stas declarando ahi es una funcion abstracta pura, aca podes encontrar mejor informacion:

http://es.wikipedia.org/wiki/Función_virtual

si esta clase no es padre de alguna otra te recominedo que borres la ultima parte el =0, tampoco es necesaria que sea virtual....

pero si pones un poco de la implementacion de la clase te van a poder ayudar mas....

ojo!. esto que te dije lo deduje del link que te pase, puede que haya alguien mas entendido del tema

saludos.
  #3 (permalink)  
Antiguo 15/01/2012, 20:53
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: funcion virtual ortientado a objetos c++

Una funcion virtual, es para cuando heredes la clase, esta deba Si o Si implementarse y alli podras colocar los parámetros...

class A {
public:
virtual int p() = 0;
};

//hereda d ela clase A
class B : public A {
public:
int p(int x, int y) {
}
};


Si no colocara la funcion P en la clase B daria error, ya que es virtual y necesita definirse en quien herede la clase A.....
  #4 (permalink)  
Antiguo 16/01/2012, 06:46
Avatar de CapacProg  
Fecha de Ingreso: marzo-2010
Ubicación: Lima - Perú
Mensajes: 324
Antigüedad: 14 años, 1 mes
Puntos: 71
Respuesta: funcion virtual ortientado a objetos c++

En cuestión esta una función virtual pura.
Código C++:
Ver original
  1. virtual int p() = 0;
Lo que significa que se debe de implementar de todas formas en las clases que la heredan.

Puesto de esta forma
Código C++:
Ver original
  1. virtual int p();
Es un error.

Por otro lado si la función virtual se declaro como
Código C++:
Ver original
  1. virtual int p() = 0;
En la clase que la hereda puede sobrecargar la función, sin embargo como la función en la clase padre es virtual pura se debe de implementar si o si, osea debe verse algo así:
Código C++:
Ver original
  1. int p()
  2. {
  3. ///...magia o quedar vacio
  4. }
  5.  
  6. int p(int x)
  7. {
  8. ///...magia
  9. }
y no sólo se debe de poner parámetros obviando la firma de la función virtual.

Espero le sirva y cualquier duda pregunte.
__________________
%
El mejor guerrero no es el que triunfa siempre sino el que vuelve sin miedo a la batalla.
%

Última edición por CapacProg; 16/01/2012 a las 08:25
  #5 (permalink)  
Antiguo 16/01/2012, 17:34
 
Fecha de Ingreso: enero-2011
Ubicación: Venezuela, Táchira
Mensajes: 96
Antigüedad: 13 años, 3 meses
Puntos: 10
Respuesta: funcion virtual ortientado a objetos c++

Hola tengo una duda referente a esto.. yo tengo mi clase base y declaro una funcion virtual

Código C++:
Ver original
  1. class CAnimal
  2. {
  3.     public:
  4.         int m_Age;
  5.         int m_MaxAge;
  6.     CAnimal();
  7.     ~CAnimal();
  8.     virtual void Talk();
  9. };

luego en un clase hija de esta la implemento asi:

Código C++:
Ver original
  1. class CDog : public CAnimal
  2. {
  3.     public:
  4.         CDog();
  5.         ~CDog();
  6.         virtual void Talk();
  7. };
  8.  
  9. void CDog::Talk()
  10. {
  11.     if(m_Age < m_MaxAge)
  12.     {
  13.         cout << "Wouf wouf!" << endl;
  14.         m_Age++;
  15.     }
  16. }

mi pregunta es: como pueden ver no le puse el =0 al final de la declaracion de la funcion en la clase base y funciona perfectamente, que diferencia hay entre poner o no el =0? porque a mi me funciona sin el =0 ? tengo algo mal en mi código? gracias de antemano!
  #6 (permalink)  
Antiguo 17/01/2012, 04:56
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: funcion virtual ortientado a objetos c++

El = 0 hace 2 cosas:
- Obliga a las clases derivadas a implementar el metodo
- Prohibe instanciar objetos de la clase base.

El no ponerlo ni obiiga ni prohibe.
__________________
Visita mi perfil en LinkedIn

Etiquetas: clase, funcion, objetos, virtual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:44.