L'ereditarietà è una tecnica che permette di descrivere una nuova classe, nei termini di un'altra già esistente e di compiere quelle modifiche o estensioni necessarie per soddisfare i nuovi bisogni.
La sottoclasse eredita tutti i metodi (operazioni) della genitrice, ma può essere estesa con metodi ed attributi locali che ne completano la descrizione. Questa rappresenta una forma di specializzazione.
L'ereditarietà offre vantaggi in termini di riuso ed astrazione.
Filosoficamente, il concetto di eredità coincide con quello di trasmissione della conoscenza: ogni volta che è possibile, non bisogna scrivere codici di programma ex-novo, ma si devono applicare ed estendere codici già esistenti (per esempio, per apprendere l'algebra non è necessario ristudiare dall'inizio le operazioni aritmetiche!). Applicando questo concetto il C++ tende ad uniformarsi alla vita reale più di ogni altro linguaggio, in quanto l'eredità domina e governa tutti gli aspetti della vita.
L'ereditarietà delle classi si specifica nella definizione della classe derivata.