Nella programmazione orientata agli oggetti, una funzione virtuale o un metodo virtuale è una funzione o un metodo il cui comportamento può essere sovrascritto all'interno di una classe che eredita da una funzione con la stessa firma. Questo concetto è una parte molto importante della parte del polimorfismo della programmazione orientata agli oggetti (OOP).