C++ Flashcards

1
Q

Was waren die Entwurfskriterien von C++?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Gemeinsamkeiten von C und C++

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Wesentliche Neuerungen in C++?

A

-objektorientierter Aspekte
-funktionale Aspekte
Überladen von Operatoren
* Neue Sicherheitsmechanismen
* Namensräume
* Templates
* Dynamische Speicherverwaltung mit Elementen der Programmiersprache

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Unterschied zu Java in Bezug auf Speicherverwaltung?

A

Volle Verantwortung für die Speicherverwaltung
* Keine Garbage Collection
* Speicher muss selbst reserviert und freigegeben werden
* Abhilfe schaffen aber sog. Smart Pointer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was macht das Schlüsselwort “auto”?

A

Das Schlüsselwort auto ermittelt automatisch den Typ einer Variable bei
ihrer Deklaration mit Initialisierung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Welche Funktion hat der static_cast?

A

Der Operator static_cast erlaubt die Umwandlung eines Typs in einen
anderen, sofern der Compiler eine Regel kennt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche Funktion hat der reinterpret_cast?

A

Uminterpretation eines Typs
Zur Änderung des Typs eines Zeigers / Datenstruktur oder Variable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Welche Funktion hat der const_cast?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welche Funktionen haben Namensräume?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Was ist eine Scope-Auflösung?

A

Der Scope-Resolution-Operator :: erlaubt den expliziten Zugriff auf eine
überlagerte globale Variable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Erkläre Referenzen

A

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!

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Erkläre das RAII-Prinzip und von welchem C++-Konzept dies verwendet wird

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Welche Typen von Smart pointern gibt es?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Funktion hat der dynamic_cast?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Unterschiede Imperative und objektorientierte Sprachen

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Welche Eigenschaften besitzt jedes Objekt nach dem Prinzip der Objektorientierung

A

Jede Objekt besitzt
* eine Identität,
* einen Zustand (Attribute),
* Operationen (Methoden)

17
Q

Was sind die Prinzipien der Objektorientierung?

A
  • Vererbung
  • Polymorphie
  • Abstrakte Datentypen
  • Information Hiding
18
Q

Welche Operatoren kann man nicht überladen?

19
Q

Was machen die Zugriffsoperationen public, protected und private?

A
  • public: Elemente, die als public deklariert sind, können von jeder Funktion oder Klasse, die eine Instanz der Klasse hat, aufgerufen werden.
  • protected: Elemente, die als protected deklariert sind, können nur von der Klasse selbst oder von abgeleiteten Klassen aufgerufen werden.
  • private: Elemente, die als private deklariert sind, können nur von der Klasse selbst aufgerufen werden. Weder abgeleitete Klassen noch andere Funktionen oder Klassen können darauf zugreifen.
20
Q

Was ist der Nutzen von Initialisierungslisten?

21
Q

Wie sind statische Member in C++ umgesetzt?

22
Q

Was bewirkt das Schlüsselwort “friend”

23
Q

Wie kann man auf Member der Oberklasse zugreifen?

24
Q

Wie werden Namenskonflikte bei Mehrfachvererbung umgangen?

A

Man muss die Methode der Oberklasse expliziet aufrufen durch

“Oberklasse”::”Member”

25
Was macht man bei der Vererbung gegen das Diamanten Problem?
Bei der Vererbung ein virtual vor das public schreiben, das stellt sicher, dass die Klasse nur einmal Vererbt wird.
26
Wie macht man Funktionsmember polymorph?
Man muss virtual vor den Rückgabetypen schreiben Destruktoren sollten in den meisten Fällen virtuell sein, diese werden dann in einer Klassenhierarchie von unten nach oben ausgeführt (bei Dynamic binding)
27
Wie erstellt man rein Virtuelle Methoden und Abstrakte Klassen?
* Sobald eine Funktion rein Virtuell ist, ist die Klasse Abstrakt und kann nicht instanziert werden. * Um eine Methode rein Virtuell zu machen schreibt man =0 hinter die Parameterliste
28
Was macht der Compiler mit Templates?
Der Compiler generiert den Code für jede Belegung eines Templates
29
Wie definiere ich ein Template?
Wichtig ist noch, dass Template Klassen nur eine .hpp Datei haben und keine .cpp Datei! bspw. template< typename T > class Stack{ ... } T kann dann wie ein normaler Datentyp benutzt werden
30
Wie erstellt man Doxygen Kommentare?
31
Was sind die wichtigsten Kommandos für Doxygen?