Viene utilizzato per l'ottimizzazione in C++?
Può essere, ed è.
Come già notato, è già in uso; see here e here mostrando il codice generato per l'override con e senza final
.
An optimisation along these lines si riferiscono alla "de-virtualizzazione" delle chiamate virtuali. Questo non è sempre immediatamente influenzato dal metodo final
della classe. Sebbene offrano un aiuto per determinarlo, si applicano le normali regole delle funzioni virtuali e della gerarchia di classi.
Se il compilatore può stabilire che in fase di esecuzione di un metodo particolare sarà sempre chiamata (ad esempio data l'esempio OP, con un oggetto automatico), si potrebbe applicare tale an optimisation anyway, indipendentemente dal fatto che il metodo è final
o meno.
Le ottimizzazioni rientrano nello as-if rule, che consentono al compilatore di applicare qualsiasi trasformazione purché il comportamento osservabile sia come se il codice originale fosse stato eseguito.
risolto la domanda – tmlen
'classe C: pubico A {void f() override; }; ' –
' new A() 'è mal formato, perché' A' è astratto. –