====== L'ereditarietà ====== È necessario usare l'ereditarietà quando le due classi devono: * avere gli stessi membri dato * avere le stesse funzioni membro * un oggetto di tipo classe Derivata deve essere (allo stesso tempo) anche del tipo Base * cioè i puntatori (o reference) che uso per oggetti della Base possono puntare anche oggetti della Derivata {{:appunti3s:ereditarieta1.png?|}} ====Definizioni delle classi==== La classe //Base// è contenuta nella classe //Derivata//, per questo motivo la classe Base deve essere già stata //definita//. Esempio corretto: Class Base // Corretto { //etc. }; class Derivata : public Base { //etc. }; Esempio errato: //ERRORE manca la definizione di Base (...include base.h) Class Base; class Derivata : public Base { //etc. }; * La classe //Derivata// avrà come membri //private// gli stessi membri //private// della //Base// * La classe //Derivata// avrà come membri //public// sia i membri //public// che quelli //protected// della //Base// L'ereditarietà viene usata per ottenere: * la relazione di "[[appunti3s:relazioni_tra_classi#generalizzazione]]" tra classi * la relazione di "[[appunti3s:relazioni_tra_classi#realizzazione]]" (insieme all'uso di puntatori e classi astratte) * Questo argomento è affrontato nel paragrafo [[appunti3s:polimorfismo]].