trucos tips programar programacion programa para optimizar optimizacion mejorar codigo c++ c++11 virtual final

tips - ¿Se utiliza final para la optimización en C++?



tips para programar en c (1)

¿Se utiliza final para la optimización en C ++?

Puede ser, y es.

Como se ha señalado, ya se está utilizando; vea aquí y here mostrando el código generado para la anulación con y sin final .

Una optimización en este sentido se relacionaría con la "des-virtualización" de las llamadas virtuales. Esto no siempre se ve afectado inmediatamente por la final de la clase ni del método. Aunque ofrecen ayuda para determinar esto, se aplican las reglas normales de las funciones virtuales y la jerarquía de clases.

Si el compilador puede determinar que en el tiempo de ejecución siempre se llamará a un método particular (por ejemplo, dado el ejemplo de OP, con un objeto automático), podría aplicar dicha optimización de todos modos , independientemente de si el método es final o no.

Las optimizaciones se encuentran bajo la regla as-if , que permite que el compilador aplique cualquier transformación siempre que el comportamiento observable sea como si se hubiera ejecutado el código original.

class A { public: virtual void f() = 0; }; class B : public A { public: void f() final override { }; }; int main() { B* b = new B(); b->f(); }

En este caso, ¿se requiere que el compilador siga haciendo la búsqueda en v-table para b->f(); , o puede llamar B::f() directamente porque fue marcado como final ?