[C con Clase] Definicion de funciones: Funcion = 0

Salvador Pozo salvapozo en gmail.com
Mie Mar 11 12:43:00 CET 2009


Hola:

> leyendo el codigo de una clase de OSC me encuentro con lo siguiente:
>
> virtual void ProcessPacket ( const char *data, int size,
>             const IpEndpointName& remoteEndpoint ) = 0;
>
> Que quiere decir ese =0 del final?

Significa que "ProcessPacket" es una función virtual pura:

http://c.conclase.net/curso/index.php?cap=038#040_virtualespuras

Eso convierte, automáticamente, a la clase a que pertenece esa función
en una clase abstracta.

Una clase abstracta funciona como un "esqueleto" para crear nuevas
clases que puedan trabajar con distintos tipos de objetos con ciertas
características comunes. Esas nuevas clases pueden provenir de la
derivación múltiple de otras clases, abstractas o no, de modo que la
clase final tenga todas las características necesarias para nuestro
diseño.

Las clases abstractas tienen algunas características propias, y
algunas limitaciones:

- No está permitido crear objetos de una clase abstracta.

- Siempre hay que definir todas las funciones virtuales de una clase
abstracta en sus clases derivadas, no hacerlo así implica que la nueva
clase derivada será también abstracta.

Es decir, estas obligado a crear una gerarquía de clases, ya que al
menos tendrás que crear una clase derivada de la que tiene la función
abstracta para poder usarla.

Hasta pronto.
-- 
Salvador Pozo Coronado
http://www.conclase.net
mailto:salvapozo en gmail.com




Más información sobre la lista de distribución Cconclase