¿Implementaciones alternativas de mecanismos virtuales?
C ++ admite enlace dinámico a través del mecanismo virtual. Pero, según tengo entendido, el mecanismo virtual es un detalle de implementación del compilador y el estándar solo especifica los comportamientos de lo que debería suceder en escenarios específicos. La mayoría de los compiladores implementan el mecanismo virtual a través de la tabla virtual y el puntero virtual. Y sí, soy consciente de cómo funciona esto, así que mi pregunta no es acerca de los detalles de implementación de los punteros virtuales y la tabla. Mis preguntas son:
¿Hay algún compilador que implemente el Mecanismo virtual de alguna otra manera que no sea el puntero virtual y el mecanismo de tabla virtual? Hasta donde he visto, la mayoría (lea g ++, Microsoft Visual Studio) lo implementa a través de una tabla virtual, mecanismo de puntero. Entonces, ¿hay prácticamente otras implementaciones de compiladores?lossizeof
de cualquier clase con solo una función virtual será el tamaño de un puntero (vptr dentrothis
) en ese compiladorEntonces, dado que el mecanismo virtual ptr y tbl en sí mismo es la implementación del compilador, ¿será siempre cierta esta afirmación que hice anteriormente?