Lähes kaikentyyppisillä objektipohjaisilla ohjelmoinneilla (OOP), jotka luovat ohjelmia ja erottavat koodiosat ”objekteiksi”, on funktio nimeltä puhdas virtuaalifunktio, joka eroaa virtuaalifunktiosta. Puhdas virtuaalifunktio, joka tunnetaan myös nimellä abstrakti funktio, toimii muiden muuttujien paikkamerkkinä ja ottaa tyhjiin paikkoihin tietoja muista funktioista ja luokista. Puhtaan virtuaalitoiminnon käytön etuna on, että tiedot ovat muokattavia ja niitä voidaan muuttaa kunkin käyttäjän mukaan. Toimiakseen on oltava johdettu luokka, josta tiedot hankitaan.
Virtuaalifunktio on samanlainen kuin puhdas muunnelma. Molemmat voivat muuttua käyttäjän syötteestä riippuen. Jos käyttäjä kirjoittaa esimerkiksi nimensä, virtuaalitoiminto muuttuu koko ohjelman mukaan käyttäjän nimeksi. Ero on siinä, että virtuaalifunktio ei ole riippuvainen muista luokista, koska virtuaalifunktiolla on oma runko, joka välittää tiedot eteenpäin muille luokille ja toiminnoille, jotka pyytävät tietoja, tässä esimerkissä käyttäjän nimi.
Puhtaalla virtuaalitoiminnolla ei sitä vastoin ole kehoa. Tämä tarkoittaa, että abstrakti toiminto on itsessään hyödytön. Sillä ei ole omaa dataa, ja jos abstrakti luokka kutsutaan ilman tietoja, se voi johtaa virheeseen. Puhtaalla virtuaalifunktiolla on oltava johdettu luokka tai luokka, joka kerää tietoja abstrakteja funktioita varten.
Johdettu luokka voi olla kysymys tai alue, johon käyttäjä syöttää jonkinlaisen syötteen, kuten tekstikentän. Tämän luokan tiedot siirretään sitten kaikkiin yhdistettyihin puhtaisiin virtuaalitoimintoihin koordinoiden vastauksia. Ellei abstraktifunktiota nimenomaisesti kutsuta, se ei aktivoidu, ellei tietoja ole helposti saatavilla.
Puhtailla virtuaalitoiminnoilla on useita etuja. Abstraktin funktion käyttäminen koko koodauskappaleen luomisen sijaan rajoittaa merkittävästi ohjelmoijan luoman koodin määrää erityisesti suurissa ohjelmissa, jotka käyttävät jatkuvasti samaa tietoa. Ohjelmoija voi myös säätää abstraktia toimintoa muuttaakseen tapaa, jolla ohjelma käsittelee dataa tehostaakseen sitä. Tiedot perustuvat johdettuihin luokkiin, joten ohjelmat, joissa on kysymyksiä ja monimutkainen syöttö, räätälöivät tiedot käyttäjän antamien tietojen mukaan ilman, että ohjelma kutsuu vahingossa toista epäolennaisen koodin osaa.