Perché C + + utilizza una programmazione orientata agli oggetti , o il modello OOP , come parte del suo progetto , i programmatori devono familiarizzare con alcuni concetti OOP , come classi e oggetti . Quando un programmatore desidera sviluppare un oggetto per l'uso in codice , deve progettare la funzionalità di un oggetto in una "classe ". Una classe definisce i dati e le funzioni che un oggetto può utilizzare. Un particolare tipo di funzione di oggetto , il distruttore virtuale , per il suo uso richiede che un programmatore di comprendere il ruolo dei distruttori nelle classi , il concetto di ereditarietà di classe , e l'uso delle funzioni virtuali in programmazione C + + . Ereditarietà  
 Un punto di forza di OOP risiede nel concetto di eredità. Quando un programmatore intende estendere il funzionale di un oggetto , o se uno parti oggetto molto del funzionale di un altro oggetto con differenze minori, il programmatore può derivare una classe dall'altra . Quando una classe deriva da un'altra classe ( la classe "base" ) , ha accesso alle variabili e le funzioni definite nella prima classe . In questo esempio , la classe " palla " deriva dalla classe "sfera ", ed estende le sue funzionalità 
 classe 
 Sphere { 
 
 pubblico : . 
 
 Int getRadius ( ) { 
 
 ritorno r ; 
 
 } 
 
 int r ; 
 
 } 
 
 classe sfera: sfera pubblica { 
 
 pubblico : 
 
 colore stringa ; 
 
 } 
 virtuali funzioni 
 
 Poiché una classe derivata ha accesso a tutte le funzioni della classe base , li può utilizzare come qualsiasi momento , come se agisse come classe base . Tuttavia, la classe derivata potrebbe invece modificare una funzione nella classe base per soddisfare le sue esigenze . Inoltre , una classe base può servire come modello per la classe derivata . In questo caso , la classe base nominerà funzioni senza definire ciò che fanno , invece di lasciare che per le classi derivate . Una funzione in una classe base che non fa nulla , lasciando invece una classe derivata per attuarlo, si chiama una funzione di " virtuale" .