Is final used for optimization in C++?
It can be, and is.
As noted, it is being used already; see here and here showing the generated code for the override with and without final
.
An optimisation along these lines would relate to the "de-virtualization" of the virtual calls. This is not always immediately affected by the final
of the class nor method. Albeit they offer help to determine this, the normal rules of the virtual functions and class hierarchy apply.
If the compiler can determine that at runtime a particular method will always be called (e.g. given the OP example, with an automatic object), it could apply such an optimisation anyway, irrespective of whether the method is final
or not.
Optimisations fall under the as-if rule, that allow the compiler to apply any transformation so long as the observable behaviour is as-if the original code had been executed.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…