Quando crei un oggetto in memoria, allocchi la seguente memoria:
1) lo spazio per i membri di istanza
2) un puntatore alla virtual table
3) spazio di servizio necessario al sistema di gestione della memoria.
La 'virtual table' e un vettore contenente un puntatore ai metodi della classe di cui puoi fare l'override.
Il vettore e' statico ed ne esiste almeno uno per ogni classe definita nel programma.
Poi ci sono altri dettagli che dipendono dal linguaggio di programmazione utilizzato (C++ piuttosto che C#, Python...)
Al momento, visto che sei alle prime armi, non farti problemi di quanta memoria ti serve. Raramente il problema e' la memoria. Molto spesso il problema e' non aver identificato gli oggetti giusti, o aver sbagliato la modellazione degli oggetti.
La programmazione ad oggetti e' una filosofia, o piu' correttamente un 'paradigma', che va compreso ed assimilato. Non conviene agirarlo senza aver ben chiari i pro ed i contro che ne derivano dal farlo.