Nästan alla typer av objektorienterad programmering (OOP), som skapar program och separerar kodsektionerna i ”objekt”, har en funktion som kallas en ren virtuell funktion, som skiljer sig från en virtuell funktion. Även känd som en abstrakt funktion, en ren virtuell funktion fungerar som en platshållare för andra variabler och tar information från andra funktioner och klasser för att fylla i tomrummen. Fördelen med att använda en ren virtuell funktion är att informationen är formbar och kan ändras efter varje användare. För att fungera måste det finnas en härledd klass från vilken data hämtas.
En virtuell funktion liknar den rena varianten. Båda kan ändras beroende på användarens input. Till exempel, om en användare skriver in sitt namn, kommer den virtuella funktionen att ändras för hela programmet för att anpassa användarens namn. Skillnaden är att en virtuell funktion inte är beroende av andra klasser, eftersom den virtuella funktionen har en egen kropp som skickar data vidare till andra klasser och funktioner som kräver informationen, i detta exempel användarens namn.
En ren virtuell funktion har däremot ingen kropp. Detta betyder att den abstrakta funktionen i sig är värdelös. Den har inga egna data och om den abstrakta klassen anropas utan någon information kan det resultera i ett fel. Den rena virtuella funktionen måste ha en härledd klass, eller en klass som samlar in data för att den abstrakta funktionen ska fungera.
Den härledda klassen kan vara en fråga eller ett område där en användare anger någon form av input, till exempel ett textfält. Informationen från denna klass överförs sedan till alla anslutna rena virtuella funktioner, och koordinerar svaren. Om inte den abstrakta funktionen är specifikt anropad, kommer den inte att aktiveras om det inte finns tillgängliga data.
Rena virtuella funktioner har flera fördelar. Att använda en abstrakt funktion istället för att skapa en hel kodningskropp begränsar avsevärt mängden kod som programmeraren behöver skapa, speciellt för stora program som använder samma information kontinuerligt. Den abstrakta funktionen kan också justeras av programmeraren för att ändra hur programmet hanterar data för att göra det mer effektivt. Informationen är baserad på härledda klasser, så program med frågor och komplex inmatning kommer att skräddarsy data efter användarens input utan att programmet råkar anropa en annan del av irrelevant kod.