#include <iostream>
using namespace std;
class A{
protected:
int x; int y;
public:
A(){ x=1, y=2; };
void stampa () {cout << x << '\t' << y << endl; };
};
class B: public A
{
int y;
public:
B() { x=3; y=4; };
};
int main(){
B* obj = new B;
obj->stampa();
}
C'e una cosa che ancora non riesco a capire:
Prima che venga invocata la funzione stampa abbiamo nella classe A x=3, y=2 mentre la classe B x=3, y=4
Possiamo dire che x è un'area condivisa per entrambe le classi mentre y ha una porzione di memoria dedicata alla classe A ed una alla B.
La classe B eredità la funzione membro stampa() ma NON capisco perchè quando viene invocata da obj->stampa() , quindi attraverso il puntatore obj che si riferisce alla classe B, perchè viene stampato il valore y=2 che appartiene alla classe A mentre viene invocata la funzione "ereditata" all'interno della classe B. Dove fa acqua il mio ragionamento?