Funzione virtuale
Nella programmazione orientata agli oggetti, una funzione virtuale o metodo virtuale è una funzione o metodo di una classe base che può essere ereditata e ridefinita (override) da una classe derivata. Rappresenta una parte importante del concetto di polimorfismo.
Nella OOP, quando una classe derivata eredita da una classe base, si può usare un oggetto della classe derivata sia come oggetto di tipo della classe base sia come oggetto di tipo della classe derivata. Se alcune funzioni sono ridefinite dalla classe derivata, la conversione di un oggetto derivato nel tipo della classe base causa una ambiguità: non è chiaro se si voglia chiamare la funzione come definita nella classe base o come ridefinita in quella derivata.
La definizione di funzione virtuale ha lo scopo di risolvere questo problema. Se la funzione in questione è identificata come "virtuale" allora la funzione della classe derivata sarà chiamata (se esiste). Se la funzione non è virtuale, si farà riferimento alla funzione della classe base.