PDA

View Full Version : [c++]eriditarieta e puntatoti


Mason
21-05-2003, 18:09
allora il problema e semplice:

#include <iostream>
using namespace std;

class Pippo{
public:
int a;
void set(){a=20;}
};

class Pluto:public Pippo{

public:
void set(){a=11;}
};

int main (){

Pippo *p,pip;
Pluto plu;

cout << "pippo "<< pip.a <<endl;
pip.set();
cout << "pippo "<< pip.a <<endl;

cout << "pluto " <<plu.a <<endl;
plu.set();
cout << "pluto " <<plu.a <<endl;

p=new Pippo();
cout <<p->a<<endl;
p->set();
cout <<p->a<<endl;
free(p);
p=new Pluto();
cout <<p->a<<endl;
(*p).set();
cout <<p->a<<endl;
free(p);
}


il prob e che nel caso del puntatore il metodo set punta sempre alla classe Pippo, mentre non usando i puntatori il metodo viene richiamato giusto.
esiste la possibilita di usare il set di Pluto anche usando un puntatore all'oggetto,naturalmente dichiarato come *Pippo?

cionci
21-05-2003, 18:39
Certo basta dichiarare set come virtuale...

class Pippo{
public:
int a;
virtual void set(){a=20;}
};

Mason
21-05-2003, 18:43
thx