Una classe derivata non può accedere con metodi suoi ai membri privati della classe genitrice.
Con metodi ereditati, invece, vi può accedere!
Ecco:
#include "iostream" using namespace std; class Genitrice{ char * privata; public: Genitrice(){ privata="sono privata"; } void metodo(){ cout << privata << endl; getchar(); } }; class Derivata:public Genitrice{ public: Derivata():Genitrice(){} }; void main(){ Genitrice gnt; gnt.metodo(); Derivata drv; drv.metodo(); }Ecco:
sono privata sono privataInvocando nella classe derivata il metodo ereditato dalla classe genitrice, esso vede il membro privato della classe genitrice.
Adesso overriddo il metodo:
#include "iostream" using namespace std; class Genitrice{ char * privata; public: Genitrice(){ privata="sono privata"; } void metodo(){ cout << privata << endl; getchar(); } }; class Derivata:public Genitrice{ public: Derivata():Genitrice(){} void metodo(){ cout << privata << endl; getchar(); } }; void main(){ Genitrice gnt; gnt.metodo(); Derivata drv; drv.metodo(); }Ecco, adesso la classe derivata overridda il metodo, ripetendolo esattamente uguale, ma appartenente ad essa, non alla classe genitrice.
1>c:\users\antonello\documents\visual studio 2010\projects\test1\test1\foglio.cpp(21): error C2248: 'Genitrice::privata': impossibile accedere a private membro dichiarato nella classe 'Genitrice'Ecco, come volevasi dimostrare!
Nessun commento:
Posta un commento