64 votos

La diferencia entre una función virtual y una función virtual pura

Posibles Duplicados:
C++ Virtual/Virtual Pura Explicó

Hola,

Necesito saber cuál es la diferencia entre una función virtual pura y una función virtual?

Sé que "la Función Virtual Pura es una función Virtual con ningún cuerpo", pero ¿qué significa esto y lo que realmente se hace por la línea de abajo:

virtual void virtualfunctioname() = 0

105voto

sbi Puntos 100828

Una función virtual hace que su clase un polimórficos de la clase base. Las clases derivadas pueden reemplazar las funciones virtuales. Las funciones virtuales llamados a través de punteros de la clase base/referencias serán resueltas en tiempo de ejecución. Es decir, la dinámica del tipo de objeto se utiliza en lugar de su tipo estático:

 Derived d;
 Base& rb = d;
 // if Base::f() is virtual and Derived overrides it, Derived::f() will be called
 rb.f();  

Una función virtual pura es una función virtual cuya declaración termina en =0:

class Base {
  // ...
  virtual void f() = 0;
  // ...

Una función virtual pura que hace que la clase se define para abstracto. Las clases abstractas no se pueden crear instancias. Las clases derivadas deben suplantar/implementar todos heredan las funciones virtuales puras. Si no, ellos también se convierten en abstracto.
En C++, una clase puede definir una función virtual pura que tenga una aplicación. (Lo que es bueno para es discutible.)

8voto

Naveen Puntos 37095

Para una función virtual que usted necesita para proporcionar la implementación de la clase base. Sin embargo clase derivada puede invalidar esta aplicación con su propia implementación. Normalmente , para las funciones virtuales puras no incluye la implementación. Usted puede hacer una función virtual pura con =0 al final de la declaración de la función. También, una clase que contiene una función virtual pura es abstracto, es decir, no se puede crear un objeto de esta clase.

5voto

AshleysBrain Puntos 11439

En realidad se puede proporcionar implementaciones de las funciones virtuales puras en C++. La única diferencia es que todas las funciones virtuales puras deben ser implementados por las clases derivadas antes de la clase puede ser instanciado.

3voto

Johann Gerell Puntos 10649

Una función virtual pura, no es usualmente (pero puede ser implementado en una clase base y debe ser implementado en una hoja de la subclase.

Que indican que el hecho de que anexar el "= 0" de la declaración, como este:

class AbstractBase
{
    virtual void PureVirtualFunction() = 0;
}

A continuación, usted no puede declarar y crear una instancia de una subclase sin que la implementación de la función virtual pura:

class Derived : public AbstractBase
{
    virtual void PureVirtualFunction() { }
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X