Diferencia entre función virtual y función virtual pura en C++

Función virtual en C++
Una función virtual es una función miembro que se declara dentro de una clase base y se redefine (anulada) por una clase derivada. Cuando hace referencia a un objeto de clase derivada mediante un puntero o una referencia a la clase base, puede llamar a una función virtual para ese objeto y ejecutar la versión de la función de la clase derivada.

Funciones virtuales puras en C++
Una función virtual pura (o función abstracta) en C++ es una función virtual para la cual no tenemos una implementación, solo la declaramos. Una función virtual pura se declara asignando 0 en la declaración.

Similitudes entre función virtual y función virtual pura

  1. Estos son los conceptos de polimorfismo en tiempo de ejecución.
  2. Prototipo, es decir, la declaración de ambas funciones sigue siendo la misma en todo el programa.
  3. Estas funciones no pueden ser globales ni estáticas.

Diferencia entre función virtual y función virtual pura en C++

función virtual función virtual pura
Una función virtual es una función miembro de la clase base que puede ser redefinida por una clase derivada. Una función virtual pura es una función miembro de la clase base cuya única declaración se proporciona en la clase base y debe definirse en la clase derivada; de lo contrario, la clase derivada también se vuelve abstracta.
Las clases que tienen funciones virtuales no son abstractas. La clase base que contiene una función virtual pura se vuelve abstracta.
Sintaxis:

virtual<func_type><func_name>()
{
    // code
}
Sintaxis:

virtual<func_type><func_name>()
    = 0;
La definición se da en la clase base. No se da ninguna definición en la clase base.
La clase base que tiene una función virtual se puede instanciar, es decir, se puede crear su objeto. La clase base que tiene una función virtual pura se vuelve abstracta, es decir, no se puede instanciar.
Si la clase derivada no redefine la función virtual de la clase base, entonces no afecta la compilación. Si la clase derivada no redefine la función virtual de la clase base, entonces no hay error de compilación, pero la clase derivada también se vuelve abstracta al igual que la clase base.
Toda clase derivada puede o no redefinir la función virtual de la clase base. Toda clase derivada debe redefinir la función virtual pura de la clase base; de ​​lo contrario, la clase derivada también se vuelve abstracta al igual que la clase base.

Publicación traducida automáticamente

Artículo escrito por 4srashti y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *