05 Feb 2010
Polymorhy in C++
Example for polymorhism in C++
// Polymorphie in C++
// by chrissie 02/2010
#include <iostream>
#include <typeinfo>
using namespace std;
class Verkehrsmittel {
public:
void bewege () { cout<<"bewege"<<endl; }
void tanke () { cout<<"tanke"<<endl; }
};
class Flugzeug: public Verkehrsmittel {
public:
void bewege() { cout<<"fahre auf Rollbahn"<<endl; }
void fliege() { cout<<"fliege"<<endl; }
};
class Auto: public Verkehrsmittel {
public:
void bewege() { cout<<"fahre auf Strasse"<<endl; }
};
int main (void)
{
Verkehrsmittel *v = new Verkehrsmittel(); // Verkehrsmittel bauen
Verkehrsmittel *b = new Flugzeug(); // kein Flugzeug, sondern Verkehrsmittel bauen
Flugzeug *f = new Flugzeug(); // Flugzeug bauen
Auto *a = new Auto(); // Auto bauen
v->bewege();
v->tanke();
cout <<typeid(v).name()<<endl;
cout <<"--"<<endl;
a->bewege();
a->tanke();
cout <<typeid(a).name()<<endl;
cout <<"--"<<endl;
b->bewege();
b->tanke();
cout <<typeid(b).name()<<endl;
cout <<"--"<<endl;
//b->fliege(); // Fehlermeldung: fliege ist kein element von Verkehrsmittel
f->bewege();
f->fliege();
f->tanke();
cout <<typeid(f).name()<<endl;
cout<<"--"<<endl;
Flugzeug *x=(Flugzeug*)b; //Das Verkehrsmittel schnell zum Flugzeug upgraden
x->fliege();
cout <<typeid(x).name()<<endl;
Flugzeug *z=(Flugzeug*)v; // Flugzeug bleibt Flugzeug
z->fliege();
cout <<typeid(z).name()<<endl;
Flugzeug *y=(Flugzeug*)a; //Das Auto zum Flugzeug umbauen
y->fliege();
cout <<typeid(y).name()<<endl;
}