Eso depende de un millón de factores diferentes y depende totalmente de la plataforma y del compilador y de la configuración.
El archivo de objeto debe contener todo el conjunto para cuerpos de funciones para funciones con enlace externo, así como todas las variables globales con enlace externo. Cualquier cosa con enlace interno puede o no garantizar una entrada separada en el archivo objeto, ya que pueden haberse optimizado e integrado directamente en su sitio de llamadas. Esto depende en gran medida de la configuración de optimización.
GCC también tiene una opción para "optimizaciones de tiempo de enlace" que básicamente agrega una copia de todo el código fuente al archivo objeto y aumenta su tamaño de manera espectacular.
Los símbolos de depuración también agregan muchos datos adicionales.
Para su pregunta específica de C++: una definición de clase en sí misma no es realmente visible en el ensamblado. Las funciones de miembros no alineados son solo más funciones que deben compilarse, mientras que los miembros de datos solo reciben el mismo tratamiento que los miembros de datos primitivos: estarán en la pila de llamadas si declaras instancias de ese tipo, pero no directamente impactar el código ensamblador ... a menos que esté inicializando cosas con constantes; las constantes entran en el código, por supuesto.
No intentaré sacar ninguna conclusión entre el tamaño del archivo "obj" y el tamaño del objeto (memoria). ¿Qué es lo que estás tratando de lograr? –
Aquí estoy interesado en el tamaño del archivo obj ya que sé que el tamaño del objeto dependerá de los datos que tenga. ¿Pero puede decirme de qué factores depende el tamaño del archivo obj?En realidad, me preguntaron esto en una entrevista, así que quería saber la respuesta. –