Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> C Sprache

C++ Funktionsüberschreibung erklärt – Praxisbeispiele & Best Practices

C++ Funktionsüberschreibung erklärt

Dieser Leitfaden entmystifiziert Funktionsüberschreibung in C++, mit klaren Beispielen, Best Practices und einer Schritt-für-Schritt-Anleitung, wie ein erfahrener C++-Entwickler sie in der Produktion einsetzen würde.

Warum Funktionsüberschreibung wichtig ist

In der objektorientierten Programmierung lässt Vererbung eine abgeleitete Klasse das Verhalten einer Basisklasse erweitern oder modifizieren. Wenn dieselbe Mitgliedsfunktion sowohl in der Basis- als auch in der abgeleiteten Klasse deklariert ist, „überschreibt“ die abgeleitete Implementierung die Basis-Version. Wenn Sie diese Funktion über ein abgeleitetes-Klassen-Objekt aufrufen, wird die überschriebene Version ausgeführt.


Beispiel 1: Grundlegende Überschreibung

#include <iostream> using namespace std; class Base { public: void print() { cout << "Basisfunktion" << endl; } }; class Derived : public Base { public: void print() { cout << "Abgeleitete Funktion" << endl; } }; int main() { Derived d; d.print(); return 0; }

Ausgabe

Abgeleitete Funktion

Der Aufruf von print() auf einer Derived-Instanz führt die überschriebene Funktion aus, nicht die Basis-Version.

C++ Funktionsüberschreibung erklärt – Praxisbeispiele & Best Practices

Wenn Sie ein Base-Objekt erstellen und print() aufrufen, sehen Sie die ursprüngliche Basis-Implementierung.

Base b; b.print(); // Ausgabe: Basisfunktion

Auf die überschriebene Basisfunktion zugreifen

Manchmal müssen Sie die Basisklassen-Version explizit aufrufen. Zwei gängige Techniken sind:

Beispiel 2: Gültigkeitsbereichsoperator zum Aufrufen der Basisfunktion

#include <iostream> using namespace std; class Base { public: void print() { cout << "Basisfunktion" << endl; } }; class Derived : public Base { public: void print() { cout << "Abgeleitete Funktion" << endl; } }; int main() { Derived d1, d2; d1.print(); d2.Base::print(); // Expliziter Aufruf von Base::print return 0; }

Ausgabe

Abgeleitete Funktion Basisfunktion

Beispiel 3: Basisfunktion aus der abgeleiteten Klasse aufrufen

#include <iostream> using namespace std; class Base { public: void print() { cout << "Basisfunktion" << endl; } }; class Derived : public Base { public: void print() { cout << "Abgeleitete Funktion" << endl; Base::print(); // Basis-Version aufrufen } }; int main() { Derived d; d.print(); return 0; }

Ausgabe

Abgeleitete Funktion Basisfunktion

Beispiel 4: Basisfunktion über Basisklassen-Zeiger zugreifen

#include <iostream> using namespace std; class Base { public: void print() { cout << "Basisfunktion" << endl; } }; class Derived : public Base { public: void print() { cout << "Abgeleitete Funktion" << endl; } }; int main() { Derived d; Base* ptr = &d; // Zeiger auf Base, der auf Derived-Objekt zeigt ptr->print(); // Ruft Base::print auf, da die Funktion nicht virtual ist return 0; }

Ausgabe

Basisfunktion

Wenn die Funktion nicht als virtual deklariert ist, ruft ein Basisklassen-Zeiger die Basis-Implementierung auf. Um echtes polymorphes Verhalten zu erreichen, deklarieren Sie die Basisfunktion als virtual und überschreiben Sie sie in der abgeleiteten Klasse.


Diese Beispiele veranschaulichen die Mechanik der Funktionsüberschreibung in C++. Durch die Beherrschung dieser Konzepte können Sie saubereren, wartbareren Code schreiben, der Polymorphie effektiv nutzt.

C Sprache

  1. C++-Operatoren meistern: Ein vollständiger Leitfaden mit praktischen Beispielen
  2. C++-Kommentare: Best Practices für lesbaren, wartbaren Code
  3. Arrays an Funktionen in C++ übergeben: Ein praktischer Leitfaden
  4. C++-Funktionen erklärt: Mit praktischen Code-Beispielen
  5. C-Funktionen meistern: Struktur, Deklaration & Best Practices
  6. C++ Programmiersprache: Überblick & Kernfeatures
  7. C++ Konstanten & Literale: Typen, Syntax & Best Practices
  8. C++ Operatoren: Typen, Nutzung & Best Practices
  9. C++ Numerische Typen: Praktischer Leitfaden
  10. C++ Overloading: Funktionen & Operatoren erklärt