• Keine Ergebnisse gefunden

Zeiger auf Instanzen und virtuelle Funktionen Polymorphie Vererbung OOP

N/A
N/A
Protected

Academic year: 2022

Aktie "Zeiger auf Instanzen und virtuelle Funktionen Polymorphie Vererbung OOP"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

C++ http://www.kohnlehome.de/c/tempfile_3734.pdf

OOP

Vererbung

abgeleitete Klassen erben Attribute und Methoden der Basisklasse class CTier{

public:

void sagwas(){ cout << "Ich bin ein Tier." << endl; } };

class CHund:public CTier{

};

int main(){

CTier tier;

tier.sagwas(); // Ich bin ein Tier.

CHund hund;

hund.sagwas(); // Ich bin ein Tier.

return 0;

}

Polymorphie

Geerbte Methoden können überschrieben werden. Beim Aufruf einer Methode ist der Typ der Instanz entscheidend.

class CTier{

public:

void sagwas(){ cout << "Ich bin ein Tier." << endl; } };

class CHund:public CTier{

public:

void sagwas(){ cout << "Ich bin ein Hund." << endl; } };

int main(){

CTier tier;

tier.sagwas(); // Ich bin ein Tier.

CHund hund;

hund.sagwas(); // Ich bin ein Hund.

return 0;

}

Zeiger auf Instanzen und virtuelle Funktionen

Beim Aufruf einer nicht virtuellen Methode ist der Typ des Zeigers entscheidend.

class CTier{

public:

void sagwas(){

cout << "Ich bin ein Tier." << endl;

} };

class CHund:public CTier{

public:

void sagwas(){

cout << "Ich bin ein Hund." << endl;

} };

int main(){

CTier* pTier1 = new CTier;

pTier1->sagwas(); // Ich bin ein Tier.

CHund* pHund = new CHund;

pHund->sagwas(); // Ich bin ein Hund.

CTier* pTier2 = new CHund;

pTier2->sagwas(); // Ich bin ein Tier.

return 0;

}

Beim Aufruf einer virtuellen Methode ist der Typ der Instanz entscheidend.

class CTier{

public:

virtual void sagwas(){

cout << "Ich bin ein Tier." << endl;

} };

class CHund:public CTier{

public:

void sagwas(){

cout << "Ich bin ein Hund" << endl;

} };

int main(){

CTier* pTier1 = new CTier;

pTier1->sagwas(); // Ich bin ein Tier.

CHund* pHund = new CHund;

pHund->sagwas(); // Ich bin ein Hund.

CTier* pTier2 = new CHund;

pTier2->sagwas(); // Ich bin ein Hund.

return 0;

}

Franz Kohnle Seite 1 von 1 03.07.2006

Referenzen

ÄHNLICHE DOKUMENTE

• Weil Objekt-Methoden nur für von null verschiedene Objekte aufgerufen werden können, kann die leere Liste nicht mittels. toString() als String

Oft ist zu dem Zeitpunkt, an dem ein Programm geschrieben wird, noch nicht klar, wieviele Daten zu verwalten sind: sollen 100 B¨ucher oder 1.000.000 B¨ucher gespeichert werden.. Da

(z.B. Quadrat) Lage, Position, Größe, Strichstärke, Strichfarbe, Füllfarbe, Füllmuster,

kann bei hund1 und hund3 nicht ausgeführt werden, da deren Typ HUND und nicht PUDEL ist, auch wenn hund3 sogar direkt als Objekt der Klasse PUDEL erzeugt wurde. Der Typ von

Alle Klassen sollen auch auf eine Methode informationAusgeben() zugreifen können, die in einem Textfenster die Namen und Werte der Attribute ausgibt. Die Attribute brauchen in

• Lokale Variablen werden innerhalb der Methode deklariert und gelten nur in der Methode

► Vererbung: Eine Klasse kann Merkmale von einer Oberklasse übernehmen..

► Vererbung: Eine Klasse kann Merkmale von einer Oberklasse übernehmen..