Definition „C++ (Programmiersprache)“

Was ist C++?

| Autor / Redakteur: LineFeed / Stephan Augsten

Eine Besonderheit der Programmiersprache C++ ist die mehrfache Vererbung (multiple inheritance).
Eine Besonderheit der Programmiersprache C++ ist die mehrfache Vererbung (multiple inheritance). (Bild gemeinfrei: laurentvalentinjospi0 - Pixabay.com)

C++ gehört zu den verbreitetsten und beliebtesten Programmiersprachen. Als Fortsetzung der strukturierten C-Programmierung setzt sie auf objektorientierte Mittel.

Herkunft und grundlegende Eigenschaften von C++

C++ wurde zwischen 1979 und 1983 entwickelt, genormt wurde die Programmiersprache im ISO-Standard von 1998. Die kompilierte Allzwecksprache stammt hauptsächlich von der Programmiersprache C ab und unterscheidet sich im Wesentlichen durch die objektorientierten Eigenschaften von ihr. Darüber hinaus ist C++ vor allem von Simula aber auch Algol, Ada, CLU und ML beeinflusst.

Als Element aus funktionalen Sprachen unterstützt C++ auch Lambda-Ausdrücke. Der Name C++ ist durch den Inkrement-Operator inspiriert, der eine Ganzzahl (nennen wir sie bspw. „i“) um den Wert eins erhöht (statt „i=i+1“ schreibt man einfach „i++“). Die Bezeichnung spielt auf die Gewohnheit an, erweiterte und verbesserte Versionen einer Software mit einer höheren Versionsnummer zu versehen.

Ein Anwendungsschwerpunkt von C++ liegt auf der Systemprogrammierung und der Softwareerstellung für Systeme mit knappen Ressourcen. Somit eignet sich die Programmiersprache für Embedded-Software-Lösungen aber auch für große Systeme.

Optional objektorientiert

Da C++ die Objektorientierung (OO) weder voraussetzt noch erzwingt, kann man in C++ auch rein imperativen Code schreiben, den ein C-Compiler akzeptiert. Dies erwies sich als Vorteil für die Verbreitung und Akzeptanz der Sprache sowie unter Umständen für die Effizienz und Leistung eines Programms. Gleichzeitig wirkte es sich aber auch negativ auf die Vorzüge objektorientierter Programmierung aus, insbesondere Fehlervermeidung und Wartbarkeit.

Multiple Inheritance: ein Sonderfall unter den OO-Sprachen

Im Gegensatz zu ähnlichen objektorientierten Sprachen, beispielsweise Java, Rust oder C#, lässt C++ eine mehrfache Vererbung zu. Das heißt, eine Klasse kann mehr als eine Basisklasse haben.

Ein Beispiel für Vererbung in C++

Um ein Gesellschaftsspiel zu programmieren, benötigt man unter anderem Klassen für Würfel, Kugelschreiber und Geldstücke.

  • Der Würfel ist ein Zufallszahlengenerator, hierzu existiert in C++ bereits die Basisklasse RandomNumberGenerator, von der die Klasse Würfel intuitiv erbt.
  • Für den Kugelschreiber mit Druck- oder Drehmechanik könnte man einen Binärzähler einsetzen: Mine heraus entspricht einer Eins, Mine versenkt einer Null. Eine passende Basisklasse wäre damit BinaryCounter.
  • Das Geldstück ist zunächst ein Zahlungsmittel und hat als natürliche Basisklasse Currency. Man könnte sie aber auch als Binärzähler definieren (Kopf: Null, Zahl: Eins) oder die Münze werfen und sie damit als Zufallszahlengenerator verwenden.

C++ vs. Java und Co

In objektorientierten Sprachen wie Java muss man sich für eine Basisklasse entscheiden. Zusätzliche Vererbungen lassen sich ausschließlich über Interfaces realisieren, die nur abstrakte (im Sprachgebrauch von C++ „virtuelle“) Funktionen enthalten können.

In C++ kann die Klasse Coin wie dargestellt sowohl von der Basisklasse Currency als auch von BinaryCounter und RandomNumberGenerator abstammen. Damit kann sie nicht nur Deklarationen sondern auch Implementationen von Methoden und Klassenvariablen erben. Der Preis für diese umfangreichere Funktionalität ist eine Mehrdeutigkeit, wenn zwei Basisklassen dieselben Bezeichner definieren.

Leistungsfähiger Polymorphismus in C++

Wie schon C unterstützt C++ die Code-Generierung über Präprozessor-Makros, aber auch eine noch leistungsfähigere, generische Programmierung mittels Templates. Sie ermöglicht einen parametrischen Polymorphismus, der das Overloading, das Überschreiben durch gleichnamige Funktionen mit unterschiedlichen Argumenten ergänzt.

Populäre C++-Anwendungen

Prominente Beispiele in C++ geschriebener Software sind Apple OS X, Adobe Photoshop, Mozilla Firefox und die MySQL Datenbank-Software, Ein C++-Dialekt ist auch die Sprache, mit der die Single-Board-Computer im Arduino IDE programmiert werden, auch wenn das Projekt selbst, etwas inkorrekt, C als Sprache benennt.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Aktuelle Beiträge zu diesem Thema

Die besten Toolchains für die App-Entwicklung

Entwicklungsumgebungen, Frameworks und Plug-ins

Die besten Toolchains für die App-Entwicklung

Apple Xcode und Android Studio sind nicht die einzigen IDEs zur Erstellung mobiler Apps, Swift und Java nicht die einzigen Sprachen. Mit Blick auf alternative Toolkits und Frameworks gehen wir den Geheimnissen der besten Toolchains auf die Spur. lesen

Wo liegen bei DevOps die Grenzen der Agilität?

Bimodales Release-Management gegen Reibungsverluste

Wo liegen bei DevOps die Grenzen der Agilität?

Fällt das Wort DevOps, so wird per se davon ausgegangen, dass eine hochgradig automatisierte und standardisierte Software-Produktionsstraße existiert. Die Agilität der Software-Entwicklung und -Bereitstellung hängt aber noch von ganz anderen Faktoren ab. lesen

Kundenspezifischer DevOps-Dienst von Ventus Cloud

DevOps-Ingenieure auf Abruf

Kundenspezifischer DevOps-Dienst von Ventus Cloud

Mit 20 erfahrenen DevOps Engineers sagt Ventus Cloud möglichen Personalengpässen im Finanz- und E-Commerce-Sektor den Kampf an. Je nach Stellenausschreibung und eigenem Bedarf erhält der Auftraggeber einen Mitarbeiter auf Zeit mit den entsprechenden Fähigkeiten. lesen

Git-Clients als Alternative zu Git-CLI

In Teams entwickeln und Code verwalten

Git-Clients als Alternative zu Git-CLI

Git-Clients gibt es für eine Vielzahl von Betriebssystemen, von Windows und Linux über macOS, iOS und iPadOS bis hin zu Android. Das ermöglicht einen sehr flexiblen Einsatz, vor allem für Entwickler-Teams, deren Mitglieder gerne verschiedene Geräte einsetzen. lesen

Security-Trainings auch für Entwickler

Statisches vs. dynamisches Security-Training

Security-Trainings auch für Entwickler

Man könnte denken, „Cybersecurity Compliance“ liegt seit Jahren im Trend mit seinen unzähligen Artikeln, Initiativen und Ausschüssen, in denen diskutiert wird, wie die Welt am besten gegen das gewaltige Multi-Bedrohungs-Biest, die Cyberkriminalität vorgehen soll. Speziell bei der Software-Sicherheit haben Unternehmen aber noch viel zu tun. lesen

Open-Source-IDEs für 3D-Spiele

Panda3D, PlayCanvas und Cafu Engine im Überblick

Open-Source-IDEs für 3D-Spiele

Beim Gaming ist 3D-Grafik längst Normalität. Titel wie Doom haben den Weg schon vor langer Zeit geebnet – und als freie Gaming Engine ist Doom weiterhin Wegbereiter. Diese und weitere vielversprechenden IDEs für 3D-Games stellen wir heute vor. lesen

Was ist WebAssembly?

Definition „Wasm“

Was ist WebAssembly?

WebAssembly ist als Ergänzung zu Javascript im Webbrowser gedacht. Es handelt um einen Bytecode, der dabei helfen soll, die Geschwindigkeit von Webanwendungen zu erhöhen. Allerdings hat das System noch gewisse Schwachstellen. lesen

.NET 5 soll Visual Basic unterstützen

Microsoft aktualisiert DotNet Core und Framework

.NET 5 soll Visual Basic unterstützen

Microsoft reagiert auf den vermehrt geäußerten Kundenwunsch, Visual Basic unter .NET Core zu verwenden. In .NET 5, dem Zusammenschluss aus Framework und Core-Version, wird die Programmiersprache deshalb wichtige Anwendungstypen unterstützen. lesen

Microsoft veröffentlicht Python-SDK v2

Native Python-Erfahrung bei der Arbeit mir Azure IoT

Microsoft veröffentlicht Python-SDK v2

Microsoft hat kürzlich eine neue Version 2.0.1 des Python-SDKs veröffentlicht. Mit dem Versionssprung setzt der Hersteller nicht länger auf einen Wrapper um das C-SDK, vielmehr handelt es sich um ein natives Python-Projekt. lesen

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 44522491 / Definitionen)