PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (C++) Klassen "überladen"


Einfachkrank
2005-04-12, 17:43:37
Moin,

also, zu kompliziert es in Worte zu fassen... ->

class CRoot
{
public:
virtual void print(void) { cout << "Root" << endl; }
};

class CNext : public CRoot
{
virtual void print(void) { cout << "Next" << endl; }
};


int main(void)
{
CRoot root;
CNext next;

root = next;

root.print(); // Hier soll jetzt nicht "Root" sondern "Next" rauskommen...

return 0;
}
Also Code zeigt es eigentlich... Ist das nicht möglich die Instanz einer abgeleiteten Klasse der Vorgängerklasse zu übertragen?

Trap
2005-04-12, 18:10:36
Polymorphie funktioniert nur mit Pointern oder Referenzen. Werttypen sind nie polymorph.

int main(void)
{
CNext next;
CRoot& root=next;
root.print();

//oder
CRoot* r = new CRoot();
r=&next; // memory leak
r->print();
return 0;
}

muhkuh_rs
2005-04-12, 18:28:39
Polymorphie funktioniert nur mit Pointern oder Referenzen. Werttypen sind nie polymorph.


Ja, der Code da oben ruft einfach den = operator von CRoot auf.

Einfachkrank
2005-04-12, 23:21:51
Danke!!! Jetzt funktionierts :):):)