Non ho capito molto.
Se riscrivi una funzione (metodo) in una classe derivata, sovrascrivi (fai l'override) del metodo base, quindi il metodo base viene sostituito da quello derivato.
Se l'istanza è della base, esegui il metodo base, altrimenti quello derivato:

codice:
base b;
b.funzione(); // metodo base

base *b = new derivata();
b.funzione(); // metodo derivata

derivata d;
d.funzione(); // metodo derivata