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