¿Qué es la herencia en C++?


La herencia permite que un tipo de datos adquiera propiedades de otros tipos de datos. La herencia de una clase base se puede declarar como pública, protegida o privada. Este especificador de acceso determina si las clases derivadas y no relacionadas pueden acceder a los miembros públicos y protegidos heredados de la clase base. Sólo la herencia pública corresponde a lo que generalmente se entiende por "herencia". Las otras dos formas se usan mucho menos frecuentemente. Si se omite el especificador de acceso, una "clase" se hereda de forma privada, mientras que una "estructura" se hereda públicamente. Las clases base pueden ser declaradas como virtuales; Esto se llama herencia virtual. La herencia virtual garantiza que solo exista una instancia de una clase base en el gráfico de herencia, evitando algunos de los problemas de ambigüedad de la herencia múltiple.

La herencia múltiple es una característica de C ++ que no se encuentra en la mayoría de los otros idiomas, lo que permite que una clase se derive de más de una clase base; Esto permite relaciones de herencia más elaboradas. Por ejemplo, una clase de "Flying Cat" puede heredar tanto de "Cat" como de "Flying Mammal". Algunos otros lenguajes, como C # o Java, logran algo similar (aunque más limitado) al permitir la herencia de múltiples interfaces a la vez que restringen el número de clases base a una (las interfaces, a diferencia de las clases, proporcionan solo declaraciones de funciones miembro, no implementación o miembro) datos). Una interfaz como en C # y Java se puede definir en C ++ como una clase que contiene solo funciones virtuales puras, a menudo conocida como una clase base abstracta o "ABC". Las funciones miembro de una clase base abstracta de este tipo normalmente se definen explícitamente en la clase derivada, no se heredan implícitamente. La herencia virtual de C ++ exhibe una característica de resolución de ambigüedad llamada
 

(0 votes)