Debido a que el VPTR determina el comportamiento virtual de las
funciones en un objeto, es crítico que el VPTR siempre esté
apuntando a la VTABLE apropiada. No tendría sentido hacer una
llamada a una función virtual antes de que esté inicializado
apropiadamente a su correspondiente VTABLE. Por supuesto, el
lugar donde se puede garantizar esta inicialización es en el
constructor, pero ninguno de los ejemplos
Instrument
tiene constructor.
Aquí es donde la creación del constructor por defecto es
esencial. En los ejemplos Instrument
, el
compilador crea un constructor por defecto que no hace nada más
que inicializar el VPTR. Este constructor es, obviamente,
llamado autormáticamente por todos los objetos
Instrument
antes de que se pueda hacer nada
con ellos, lo que asegura el buen comportamiento con las
llamadas a funciones virtuales.
Las implicaciones de la inicialización automática del VPTR dentro de un constructor se discute en un sección posterior.