es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Herencia múltiple de interfaces en COM.

Recientemente encontré una cita en el libro Essential COM de Don Box:

interface ICatDog : ICat, IDog { // ilegal, múltiples bases

COM prohíbe la herencia de múltiples interfaces por diversas razones. Una de ellas es que la representación binaria de la clase base abstracta resultante en C++ no sería invariante al compilador.

Me preguntaba si alguien sabe por qué la herencia de múltiples bases es mala para COM y rompería la invariancia del compilador.

Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Se afirma en el libro “Essential COM” de Don Box que COM prohíbe la herencia múltiple de interfaces porque la representación binaria de la clase base abstracta resultante en C++ no sería invariante al compilador. Esto significa que si una clase tiene múltiples bases, la representación binaria puede variar dependiendo del compilador utilizado. Esta variación puede causar problemas durante la ejecución del código en máquinas diferentes o con compiladores diferentes.

    Además, tener múltiples interfaces bases puede causar problemas de ambigüedad al resolver llamadas de métodos, ya que múltiples interfaces bases pueden tener métodos con el mismo nombre y firma. Esto puede llevar a errores difíciles de depurar y generar confusión para los desarrolladores.

    Por lo tanto, para garantizar la interoperabilidad y mantener la invariancia del compilador, COM limita la herencia de interfaces a una sola interfaz base.

Comments are closed.