tiempo de ejecución
Por qué? Las funciones se resuelven estáticamente, por lo que las llamadas a funciones son las mismas. El constructor MyClass1
llamará a los constructores de las clases base, y su destructor llamará a los destructores de las clases base, por lo que para la destrucción de la construcción & puede haber una sobrecarga. Tal vez. Algunos compiladores pueden optimizar las llamadas de distancia.
memoria
Ésta será la misma, tanto sólo tienen un miembro de double
. Teóricamente Depende de la implementación, supongo, ya que no es un requisito del estándar, pero lo más común es que no haya gastos generales de memoria.
Nota que la supresión de un objeto MyClass1
a través de un puntero a Derived
resulta en un comportamiento indefinido, porque no hay virtual
destructor.
Nota 2 herencia sin polimorfismo es un olor a código. No dice que está mal, pero en la mayoría de los casos la composición es mejor.
En teoría, no debería haber diferencia en el rendimiento. En la práctica ... bueno, mida sus escenarios particulares y descubra (no esperaría ninguna diferencia con altos niveles de optimización, pero quizás el compilador no logre alinear las llamadas al constructor de la clase base, o podría no realizar EBO, o ... todo tipo de cosas _podría ocurrir, incluso podría ser más rápido. La forma de averiguarlo es medir). –
posible duplicado de [¿Cuál es el costo de la herencia?] (Http://stackoverflow.com/questions/7210412/what-is-the-cost-of-inheritance) –
+1: Bonita imagen. –