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?

A
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?

A
21
Q

Wie sind statische Member in C++ umgesetzt?

A
22
Q

Was bewirkt das Schlüsselwort “friend”

A
23
Q

Wie kann man auf Member der Oberklasse zugreifen?

A
24
Q

Wie werden Namenskonflikte bei Mehrfachvererbung umgangen?

A

Man muss die Methode der Oberklasse expliziet aufrufen durch

“Oberklasse”::”Member”

25
Q

Was macht man bei der Vererbung gegen das Diamanten Problem?

A

Bei der Vererbung ein virtual vor das public schreiben, das stellt sicher, dass die Klasse nur einmal Vererbt wird.

26
Q

Wie macht man Funktionsmember polymorph?

A

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
Q

Wie erstellt man rein Virtuelle Methoden und Abstrakte Klassen?

A
  • 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
Q

Was macht der Compiler mit Templates?

A

Der Compiler generiert den Code für jede Belegung eines Templates

29
Q

Wie definiere ich ein Template?

A

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
Q

Wie erstellt man Doxygen Kommentare?

A
31
Q

Was sind die wichtigsten Kommandos für Doxygen?

A