====== 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]].