En
C++,
herencia virtual es un tipo de herencia que solventa algunos de los problemas causados por la
herencia múltiple (particularmente, el "
problema del diamante") mediante la aclaración de la ambigüedad sobre qué miembros de clases padre usar. Es usada cuando la herencia está representando restricciones de un conjunto más que la composición de partes. Una clase base multi-heredada se denota como virtual con la
palabra clave virtual
.