¿Qué sucede en el nivel inferior cada vez que instanciamos un nuevo objeto?

Las funciones no se crean en la instanciación, están en su programa al igual que cualquier otra función. Sin embargo, todas estas funciones obtienen un puntero “invisible” como primer argumento.

Entonces el código:

clase Foo {
privado:
int x;
público:
barra vacía () {
x = 5
}
};

int main () {
Foo Foo;
foo.Bar ();

devuelve 0;
}

Realmente solo se traduce a:

struct Foo {
int x;
}

int Bar (Foo * foo) {
foo-> x = 5;
}

int main () {
Foo Foo;
Bar (y foo);

devuelve 0;
}

Por supuesto, hay algún cambio de nombre y los modificadores de acceso se verifican en tiempo de compilación, pero esta es la idea básica.

NOTA: Esto es lo que sucede si no estamos hablando de funciones virtuales. Entonces es una historia completamente diferente, donde se construye una v-table para cada clase.

More Interesting

¿Cuál es el significado de las clasificaciones de ohmios en las pastillas de guitarra?

¿Por qué es tan importante el anuncio de LIGO sobre la detección exitosa de ondas gravitacionales? ¿Cuáles son las consecuencias?

¿Hay alguna explicación de por qué una acción produce una reacción, o damos por sentado la tercera ley de Newton?

Si una bala se dispara perpendicularmente desde una nave espacial que viaja a 0.999c, ¿qué tan rápido puede ir en la dirección en que se disparó?

Se dice que la primera ley de Newton da origen a la fuerza centrípeta. ¿Cómo?

¿Dónde está la reacción igual y opuesta cuando levanto un objeto?

¿Qué tan rápido se mueve un fotón a través del tiempo y qué tan rápido se mueve un fotón en x4?

¿Qué significa la integral de línea del campo eléctrico?

¿Es posible nadar en una piscina llena de polvo fino como bicarbonato de sodio? ¿Cómo se comportaría físicamente el cuerpo humano en un medio así?

¿Existe una razón biológica científica detrás de por qué los humanos sienten vergüenza, o es estrictamente una construcción de la sociedad?

¿Estaría violando las leyes de termodinámica si el grafeno se pudiera usar para filtrar el hidrógeno del aire para hacer combustible?

Suponiendo que todos sean del mismo tamaño, ¿son cúbicas las burbujas dentro de una bola de espuma?

Un niño lanza bolas al aire. Lanza uno cada vez que uno anterior está en su punto más alto. ¿Qué tan alto van las bolas si lanza n bolas en un segundo?

Física experimental: ¿cómo puedo lanzar una moneda para poder controlar su velocidad inicial, posición y momento angular?

¿Cómo puede la tierra acelerarse hacia arriba para encontrarse con un objeto que cae?