Pregunta

¿El ABI de la visión de una clase sigue siendo estable incluso si otros cambios, que involucran virtuales, se hacen en la clase derivada?

Es decir, digamos que tengo una interfaz InterfaceA (clase abstracta con muchas funciones virtuales puras) y una clase DerivedB que hereda de él. Escribo una biblioteca que tiene una función que toma un InterfaceA *. Lo que quiero saber es si la interfaz sigue siendo compatible binaria siempre que la interfaz en sí no cambie.

Borrar, si modifico InterfaceA No espero que el código sea compatible binario. Sin embargo, ¿qué pasa si solo modifico? DerivedB, digamos que heredo más interfaces o agrego otras funciones virtuales. En el más extremo, digamos que multiplico heredado de otra clase que define InterfaceA. Lo hace InterfaceA ¿Sigue siendo compatible binario a pesar de todos estos cambios?

Mi suposición y experiencia ahora es que sí es compatible. Solo estoy buscando confirmación de esto (o refutación si no es compatible).

Nota: No me importa la escritura dinámica u otro casting, solo me importa las funciones de la interfaz.

Tenga en cuenta también: Suponga que las versiones del compilador que se utilizan son estables en su totalidad, sin cambios principales en la versión.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top