Estaba leyendo sobre la Optimización de base vacía (EBO). Mientras lee, las siguientes preguntas aparecieron en mi mente:Cuando los programadores usan Empty Base Optimization (EBO)
¿Cuál es el punto de utilizar clase vacía como clase base cuando no contribuye en nada a las clases derivadas (ni funcionalidad-sabio, ni datos en cuanto a)?
En this article, leí esto:
// S es struct
clase vacía T: S
{
int x;
};[...]
en cuenta que no hemos perdido ningún dato o precisión código: cuando se crea un objeto independiente de tipo S, el tamaño del objeto sigue siendo de 1 (o más) como antes; solo cuando S se utiliza como base clase de otra clase su memoria se contrae a cero. Para realizar el impacto de este ahorro, imagine un vector que contiene 125,000 objetos. ¡El EBO solo ahorra la mitad de un megabyte de memoria !
¿Quiere decir que si no usamos "S" como clase base de la "T", nos necesariamente consumir el doble de megabyte de memoria? Creo que el artículo compara dos escenarios diferentes que no creo que sean correctos.
me gustaría saber un escenario real cuando EBO pueden demostrado ser útiles. (Medios, en el mismo escenario, tendríamos necesariamente estar en pérdida si no usamos EBO!).
Tenga en cuenta que si su respuesta contiene explicaciones como esta:
El punto es que una clase vacía tiene el tamaño no es cero, pero cuando deriva o se deriva que puede tener un tamaño de cero, entonces no te pido eso, como ya lo sé. Mi pregunta es, ¿por qué alguien derivaría su clase de una clase vacía en primer lugar? Incluso si él no deriva y simplemente escribe su clase (sin ninguna base vacía), ¿está en la pérdida de CUALQUIER manera?
@Suma ... ¿qué cambiaste en mi publicación? : -/.. No puedo entender ... – Nawaz
¿Por qué dices que la clase base no aporta nada funcionalmente? – jalf
@jalf ... hasta ahora no vi ningún ejemplo ... por cierto, por funcionalidad me refiero a funciones que hacen algo, en lugar de nada – Nawaz