Stavo cercando di trovare più informazioni sull'argomento, ma ho potuto trovare solo questo: In C ++ perché e in che modo le funzioni virtuali sono più lente?
La risposta dice che la chiamata virtuale "Ottieni [s] l'indirizzo corretto della funzione dal vtable in un registro (l'indice in cui è archiviato l'indirizzo corretto della funzione è deciso al momento della compilazione).".
Ma come fa a sapere qual è la funzione corretta (indirizzo) in primo luogo? Non deve controllare quale tipo ha l'oggetto sottostante per farlo, quindi è simile a un'istruzione switch di ramo?