C++ Flashcards
Was waren die Entwurfskriterien von C++?
möglichst kompatibel zu C
* Objektorientierung als neues Paradigma
* unkomplizierte Programmierung
* keine eingebauten High-Level-Datentypen und Operatoren,
aber durch Benutzerdefinition möglich
* hohe Laufzeit- und Speicherplatzeffizienz
* höhere Sicherheit
Gemeinsamkeiten von C und C++
Grobe Programmstruktur für imperative Programme ist identisch.
Neu: bool
- Präprozessor-Befehle (weniger relevant in C++)
- Deklaration von globalen Variablen
- Funktionsprototypen
- main()-Funktion
- Funktionsdefinitionen
Datentypen
* Aufzählungstypen (enum)
* Arrays
* Strukturen (struct) und Unions (union)
* Zeiger
Wesentliche Neuerungen in C++?
-objektorientierter Aspekte
-funktionale Aspekte
Überladen von Operatoren
* Neue Sicherheitsmechanismen
* Namensräume
* Templates
* Dynamische Speicherverwaltung mit Elementen der Programmiersprache
Unterschied zu Java in Bezug auf Speicherverwaltung?
Volle Verantwortung für die Speicherverwaltung
* Keine Garbage Collection
* Speicher muss selbst reserviert und freigegeben werden
* Abhilfe schaffen aber sog. Smart Pointer
Was macht das Schlüsselwort “auto”?
Das Schlüsselwort auto ermittelt automatisch den Typ einer Variable bei
ihrer Deklaration mit Initialisierung
Welche Funktion hat der static_cast?
Der Operator static_cast erlaubt die Umwandlung eines Typs in einen
anderen, sofern der Compiler eine Regel kennt.
Welche Funktion hat der reinterpret_cast?
Uminterpretation eines Typs
Zur Änderung des Typs eines Zeigers / Datenstruktur oder Variable
Welche Funktion hat der const_cast?
In C++ dient der const_cast dazu, die Konstanz eines Objekts aufzuheben oder wiederherzustellen.
Achtung: Mit dem Cast macht man aus einer unveränderlichen Größe
keine veränderliche
Welche Funktionen haben Namensräume?
Ermöglicht es gleichnamige Methoden und Variablen zu verwenden
Außerdem: Erlaubt Typen und Funktionen verschiedenen Bereichen
zuzuordnen, so dass sie namentlich auseinander gehalten werden können
Was ist eine Scope-Auflösung?
Der Scope-Resolution-Operator :: erlaubt den expliziten Zugriff auf eine
überlagerte globale Variable
Erkläre Referenzen
Eine Referenz ist ein Aliasname für eine Variable. Sie repräsentiert
dasselbe Objekt.
* Spart Kopien, ermöglicht echtes Call-by-reference, vermeidet Prüfungen gegen
Null-Zeiger (NULL, nullptr).
Ein Re-assignment ist nicht möglich!
Erkläre das RAII-Prinzip und von welchem C++-Konzept dies verwendet wird
Resource acquisition is initialization (RAII) oder „Ressourcenbelegung ist
Initialisierung“ ist eine Programmiertechnik, die Memory Leaks vermeidet.
Verwendet von Smart pointern!
Grundprinzipien:
* Reservierung von Speicher wird an den Konstruktor eines Objekts gebunden.
* Freigabe des Speichers erledigt der Destruktor.
* Objekte werden auf dem Stack gehalten. Dadurch automatische Freigabe des
Speichers, wenn Objekt vom Stack gelöscht wird.
* Keine direkte Verwendung von new und delete.
Welche Typen von Smart pointern gibt es?
Shared pointer speichert einen Zeiger, der einem oder mehreren Besitzern geteilt wird.
* Intern mit Reference counting umgesetzt: ein weiterer Besitzer (+1),
ein Besitzer weniger (-1), kein Besitzer mehr (delete-Aufruf)
* Unique pointer speichert einen Zeiger, der nur einem Besitzer zugeordnet ist.
* Keine Kopie, aber Übertragung an neuen Besitzer möglich
* Weak pointer ist eine „schwache“ temporäre Beziehung zu einem Zeiger
* Kein Besitzanspruch
* Originalobjekt kann vorhanden sein oder bereits entfernt worden sein
Welche Funktion hat der dynamic_cast?
Downcasts and Crosscasts über C-Casts sind ausgesprochen unsicher:
* Es erfolgt keine Typprüfung.
* Manche Compiler lassen Fehl-Casts „durchgehen“, was zu undefiniertem
Verhalten führt.
Rückgabewert:
* Bei zulässiger Konvertierung: umkonvertierter Typ
* nullptr, falls die Konvertierung nicht möglich war
Unterschiede Imperative und objektorientierte Sprachen
Imperativ:
Programm besteht aus einer Abfolge von Operationen, die jeweils Daten
bearbeiten.
* Variablenkonzept: Eingabewert in Variablen speichern und dann
weiterverarbeiten
Objektorientiert:
Alle zur Lösung des Problems erforderlichen Daten und Operationen werden zu
Objekten zusammengefasst.
* Objekte sind gleichberechtigte, aktiv handelnde Einheiten, die miteinander
kommunizieren, indem sie Botschaften senden und empfangen.