Dynamische Bindung in C++: Erklärung, Funktionen & Implementierung

Veröffentlicht: 2021-02-04

Inhaltsverzeichnis

Einführung

Dieser Artikel führt Sie durch die Funktionsweise der dynamischen Bindung in C++ . Es wird erwartet, dass Sie über Grundkenntnisse in der Funktionsweise von Vererbung und statischer Bindung in C++ verfügen. Dies liegt daran, dass einige Einschränkungen der statischen Bindung durch die dynamische Bindung aufgehoben werden. Wir zeigen Ihnen, zusammen mit richtigen und einfachen Codes, wie dynamisches Binden nützlich ist.

Was ist dynamische Bindung?

Unter Bindung verstehen wir im Allgemeinen die Verknüpfung eines Objekts mit einem anderen. In Bezug auf Programmiersprachen ist die Bindung nicht sehr unterschiedlich. Es ist die Verknüpfung einer Funktionsdefinition und eines Funktionsaufrufs. Aber warum „dynamisch“? Mit einfachen Worten, die dynamische Bindung verzögert nur die Auswahl oder Auswahl, welche Funktion bis zu ihrer Laufzeit ausgeführt werden soll. Mithilfe der dynamischen Bindung in C++ wählen wir basierend auf dem zugrunde liegenden Typ des Objekts aus, welche Funktion wir ausführen können.

Diese Flexibilität wurde Programmierern mit statischer Bindung nicht gewährt. Die statische Bindung erfolgte früher zur Kompilierzeit und nicht zur Laufzeit. Darüber hinaus hat die statische Bindung die Verknüpfung von Funktionsaufruf und Definition während der Kompilierzeit vorgenommen, während die dynamische Bindung dies, wie Sie jetzt wissen, erst zur Laufzeit tut.

Die dynamische Bindung ermöglicht es uns, die Typunterschiede zu ignorieren, indem sie uns die Flexibilität bei der Auswahl des Funktionstyps gibt, den wir zu diesem Zeitpunkt der Laufzeit benötigen. Wenn wir diese Anweisung untersuchen, können wir verstehen, dass die dynamische Bindung es uns ermöglicht, verschiedene Objekte mit nur einem einzigen Funktionsnamen zu handhaben. Dies reduziert die Codekomplexität und erleichtert dem Programmierer das Debuggen.

Virtuelle Funktionen

Wir haben viel über dynamisches Binden in C++ gesprochen. Aber wie geht man damit vor? Um die dynamische Bindung in Ihrem C++-Code zu implementieren, müssen Sie „virtuelle Funktionen“ verwenden. Was sind also virtuelle Funktionen?

Dieser Artikel wird nicht ausführlich auf virtuelle Funktionen eingehen, da sie wichtig genug für einen separaten Artikel sind. Sie erhalten jedoch genügend Informationen über virtuelle Funktionen, um die dynamische Bindung klar zu verstehen.

Virtuelle Funktionen sind spezielle Elementfunktionen, an die Aufrufe, die über einen Zeiger (oder Verweis) erfolgen, zur Laufzeit basierend auf dem Typ des Objekts mit dem Zeiger aufgelöst werden. Einfach ausgedrückt: Wenn Sie eine virtuelle Funktion in einer Basisklasse definieren, können Sie die Funktion in abgeleiteten Klassen überschreiben.

Das ist die Stärke virtueller Funktionen. In C++ definieren Sie eine virtuelle Funktion mit dem Schlüsselwort „virtual“ am Anfang der Funktionsdefinition. Möglicherweise müssen Sie das Schlüsselwort virtual nicht für jede abgeleitete Klasse einer Basisklasse wiederholen, da eine einmal als „virtuell“ deklarierte Funktion in allen abgeleiteten Klassen „virtuell“ bleibt.

C++-Implementierung

Das ist über virtuelle Funktionen. Schauen wir uns nun ein Programm an, um die dynamische Bindung in C++ zu verstehen :

Programm Nr. 1 :

Wir sehen zwei Klassen: Klasse A ist die 'Basis'-Klasse, während Klasse B die 'abgeleitete Klasse' ist. In beiden Klassen gibt es eine Funktion mit dem gleichen Namen 'display'. In der übergeordneten Klasse gibt es eine weitere Funktion namens final_print(), die die Funktion display() aufruft. In der main()-Funktion erstellen wir zwei verschiedene Objekte für zwei verschiedene Klassen und rufen dieselbe display()-Funktion auf.

Sehen wir uns die Ausgabe des obigen Programms an.

Ausgabe für Programm Nr. 1:

Wie erwartet führt die Ausgabe die Funktion display() der Basisklasse zweimal aus, wie sie zur Kompilierzeit definiert wurde (statische Bindung). Aber das ist nicht die Ausgabe, die wir wollten.

Um nun den obigen Code in einen dynamischen Bindungscode umzuwandeln, müssen wir virtuelle Funktionen verwenden. Lassen Sie uns sehen, wie das geht.

Programm Nr. 2:

Wir fügen einfach das Schlüsselwort „virtual“ für unsere beiden display()-Funktionen in Klasse A und Klasse B hinzu und machen sie so zu virtuellen Funktionen. Das ist die einzige Änderung, die nötig ist. Wie zuvor rufen wir dieselbe Funktion final_print() mit zwei verschiedenen Objekten auf. Mal sehen, welche Ausgabe wir jetzt bekommen.

Ausgabe für Programm Nr. 2 :

Dies ist die Ausgabe, die wir wollten, und wir haben sie durch die dynamische Bindung der Funktionen erhalten.

Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

In diesem Artikel sind wir das Konzept der dynamischen Bindung in C++ durchgegangen . Zusammenfassend ermöglicht uns die dynamische Bindung Flexibilität, indem sie eine einzelne Funktion aufruft, um verschiedene Objekte zu handhaben. Wie aus unserem Code hervorgeht, haben wir dieselbe Funktion display() aufgerufen, indem wir zwei verschiedene Objekte erstellt haben, um uns zwei verschiedene Ausgaben zu geben. Dies ist möglich, da die dynamische Bindung zur Laufzeit erfolgt, im Gegensatz zur statischen Bindung, die zur Kompilierzeit erfolgt.

Wenn Sie mehr über Full-Stack-Entwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenges Training, mehr als 9 Projekte und Aufgaben bietet , IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Was ist die Programmiersprache C++?

C++ ist eine universelle Programmiersprache. Es ist eine der am weitesten verbreiteten Programmiersprachen der Welt. C++ ist eine erweiterte Version der Sprache C und bietet Einrichtungen, die die objektorientierte Programmierung erleichtern. C++ ist eine Programmiersprache für allgemeine Zwecke, während C eine Programmiersprache für spezielle Zwecke ist. C++ wurde als Erweiterung von C entwickelt, um objektorientierte Programmierung zu unterstützen, und wird verwendet, um Desktop-Anwendungen, Anwendungen für mobile Geräte, eingebettete und Echtzeitsysteme sowie Webanwendungen und -dienste zu entwickeln. C++ ist eine imperative, prozedurale, kompilierte Mehrzweck-Programmiersprache mit mehreren Paradigmen. Es unterstützt strukturierte Programmierung, objektorientierte Programmierung und generische Programmierung. Es hat ein dynamisches Typsystem und eine explizite Speicherverwaltung.

Was ist objektorientierte Programmierung?

OOP ist der Weg, um wiederverwendbaren, einfach zu wartenden und lesbaren Code zu erstellen. Kurz gesagt, OOP ist ein Programmierparadigma, das darauf basiert, die Software um reale Objekte herum zu entwerfen. Wenn Sie beispielsweise in Java eine Software entwerfen möchten, die sich mit Büchern befasst, erstellen Sie eine Klasse namens Book und dann separate Instanzen (Objekte) dieser Klasse, die ein einzelnes Buch darstellen. Gleiches gilt für andere Klassen, die Sie in der Software erstellen müssen.

Was ist dynamische Bindung in C++?

Die dynamische Bindung ordnet die Bedeutung eines Bezeichners in einem Programmtext der zur Laufzeit gefundenen Definition für diesen Bezeichner zu. Diese Bedeutungszuordnung wird Bindung genannt. Es ist das grundlegende Prinzip der objektorientierten Programmierung. Dynamisch gebundene Bezeichner sind die Zweige und Blätter der objektorientierten Klassenhierarchie. Sie sind dynamisch, weil sie zur Laufzeit aufgelöst werden, nicht zur Kompilierzeit. Die Zweige und Blätter der objektorientierten Klassenhierarchie sind dynamisch, weil sie an die von ihnen abgeleiteten Klassen gebunden sind.