C-Programmierung

Ãœberschreiben von Methoden

Sichtbarkeitsbereiche | | Klassenhierarchien

Alle Methoden in einer Basisklasse dürfen in einer abgeleiteten Klasse durch eine neue Implementierung ersetzt werden.

Die neue Methode überschreibt die alte.

Welche Methode aufgerufen wird, entscheidet der aktuelle Klassentyp oder Zeigertyp.

Beispiel:

class A
{
   public:

   A() {}
   ~A() {}

   void print() {printf("A");}
};

class B : public A
{
   public:

   B() {}
   ~B() {}

   void print() {printf("B");}
};

A a;
a.print(); // --> Ausgabe "A"

B b;
b.print(); // --> Ausgabe "B"

Q Kann man trotzdem in B auf die alten Methoden aus A zugreifen?

Ja, indem man den Namensraum spezifiziert, z.B.:

A::print();

Q Kann man trotzdem im Konstruktor von B auf den alten Konstruktor aus A zugreifen?

Ja, aber nur mit der Doppelpunkt-Schreibweise, z.B.:

   B() : A() {}

Q Kann man trotzdem im Destruktor von B auf den alten Destruktor aus A zugreifen?

Nein, dies geschieht automatisch!

Sichtbarkeitsbereiche | | Klassenhierarchien

Options: