PDA

View Full Version : [C++] cosa non ho capito dell'ereditarieta' ???


Bonfo
06-12-2006, 01:09
Eccomi di nuovo con le mie domande niubbe.
Con il codice stringo perche' e' un po' tardi :D :coffee:


class Base
{
pubblic:
Base();
~Base();
virtual void Method() { printf("BASE")};
}



class BaseSeconda: public Base
{
pubblic:
BaseSeconda(): Base() {};
~BaseSeconda();
void Method() { printf("BASE SECONDA")};
}



class Dervied: public BaseSeconda
{
pubblic:
Dervied(): BaseSeconda() {};
~Dervied();
}



int main(int argc, char* argv)
{
Base* class = new Dervied();
cout << class->Method();
}



BASE

:eekk: :eekk: :eekk: :eekk:

Non so se lo avevate capito ma io mi aspettavo un BASE SECONDA
:muro: :muro: :muro:

P.S.: il codice l'ho scritto in fretta e furia, il concetto e' che volevo il metodo della classe di mezzo e non della "capostipite"

NA01
06-12-2006, 06:25
a parte che non compilerà mai :p


#include <iostream>

class Base
{
public:
virtual void Method() { printf("BASE");}
};

class BaseSeconda: public Base
{
public:
void Method() { printf("BASE SECONDA");}
};


class Dervied: public BaseSeconda
{

};

int main(int argc, char* argv)
{
Base* classe = new Dervied();
classe->Method();
}



ho solo spostato ';' e tolto qualche lettera qua e là giusto per farlo compilare, ma a me dà base seconda così come , secondo me giustamente, ti aspettavi

ciaaaao!

kk3z
06-12-2006, 09:23
Per quanto mi ricordo anche le funzioni della classe derivata devono usare la keyword virtual perchè funzioni il tutto... :wtf:

Bonfo
06-12-2006, 10:50
a parte che non compilerà mai :p

Lo avevo detto che il codice lo avevo scritto in furia :grrr:
(anche perche' cout<<printf("BASE")); fa scompiscare dalle risate :asd: :asd: :asd: )
ma a me dà base seconda così come , secondo me giustamente, ti aspettavi


Porcaccia miseria ai ragione!!! :eekk:
ovvero il mio codice dell'altra notte ora va perfettamente come doveva....
... prima pero' ho cancellato tutti i file oggetto e rifatto una compilazione ex-novo. Forse era solo un problema di linking :boh:

In ogni caso ecco la lezione del saggio:

Se e' tardi e sei stanco, non programmare ... VAI A LETTO !!!

:asd: :asd:

AngeL)
07-12-2006, 15:59
public si scrive con una b :doh: