lesson 2 OOP 3 Flashcards

1
Q

Was ist Operatorüberladung in C++ und welches Ziel verfolgt sie?

A

Operatorüberladung erlaubt es, bestehende Operatoren für benutzerdefinierte Datentypen neu zu definieren. Ziel ist es, eine intuitive und kompakte Schreibweise zu ermöglichen, indem die Operatoren auf benutzerdefinierte Datentypen angewendet werden können.

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

Welche Arten von Operatoren können überladen werden?

A

Sowohl unäre als auch binäre Operatoren können überladen werden. Unäre Operatoren arbeiten auf einem Operanden, während binäre Operatoren zwei Operanden verwenden.

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

Was sind die Limitierungen der Operatorüberladung?

A

Limitierungen der Operatorüberladung umfassen:
- Es können nur bestehende Operatoren überladen werden.
- Die Stelligkeit und Präzedenz eines Operators können nicht geändert werden.
- Überladene logische Operatoren bieten keine Short-Circuit Evaluation.

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

Was sind Konstruktoren und Destruktoren in C++?

A

Konstruktoren initialisieren Objekte beim Erstellen, während Destruktoren aufgerufen werden, um Ressourcen freizugeben, wenn das Objekt zerstört wird. Sie automatisieren den Lebenszyklus eines Objekts.

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

Welche Arten von Konstruktoren gibt es in C++?

A

Es gibt Default-Konstruktoren, Copy-Konstruktoren und benutzerdefinierte Konstruktoren. Jeder Typ dient einem anderen Zweck, von der Standardinitialisierung bis zur Kopie eines Objekts.

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

Was ist der Unterschied zwischen einem Copy-Konstruktor und einem Zuweisungsoperator?

A

Der Copy-Konstruktor wird bei der Initialisierung eines neuen Objekts durch ein anderes Objekt verwendet, während der Zuweisungsoperator verwendet wird, um den Zustand eines existierenden Objekts zu überschreiben.

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

Was ist statische Bindung in C++?

A

Bei der statischen Bindung entscheidet der Compiler zur Compile-Zeit, welche Methode aufgerufen wird, basierend auf dem Datentyp des Objekts. Dies passiert bei Funktionen, die nicht als ‘virtual’ markiert sind.

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

Was ist dynamische Bindung in C++ und wann wird sie verwendet?

A

Dynamische Bindung entscheidet zur Laufzeit, welche Methode aufgerufen wird. Sie wird bei virtuellen Funktionen verwendet, wenn der tatsächliche Objekttyp erst zur Laufzeit bekannt ist.

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

Was ist die vtable in C++ und wie unterstützt sie die dynamische Bindung?

A

Die vtable ist eine Tabelle, die Zeiger auf virtuelle Funktionen enthält und zur Laufzeit verwendet wird, um die richtige Funktion in einer Vererbungshierarchie aufzurufen.

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

Warum ist es wichtig, den Destruktor als ‘virtual’ zu deklarieren?

A

Wenn ein Objekt über einen Zeiger auf die Basisklasse gelöscht wird, stellt ein virtueller Destruktor sicher, dass der Destruktor der abgeleiteten Klasse aufgerufen wird, um Speicherlecks zu vermeiden.

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

Was ist eine Initialisierungsliste und warum wird sie verwendet?

A

Eine Initialisierungsliste im Konstruktor dient zur Initialisierung von Objektvariablen vor der Ausführung des Konstruktors und ist besonders effizient bei Konstanten und Referenzen.

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

Wann wird der Copy-Konstruktor automatisch aufgerufen?

A

Der Copy-Konstruktor wird aufgerufen, wenn ein Objekt mit einem anderen Objekt initialisiert wird, ein Objekt als Wertparameter übergeben wird oder ein Objekt von einer Funktion zurückgegeben wird.

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

Was sind die Vorteile der dynamischen Speicherverwaltung mit ‘new’ und ‘delete’?

A

‘new’ und ‘delete’ ermöglichen die flexible Zuweisung von Speicher zur Laufzeit. Sie sind nützlich, wenn die Größe von Datenstrukturen zur Compile-Zeit nicht bekannt ist.

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

Warum sollte der Zuweisungsoperator überladen werden, wenn der Copy-Konstruktor vorhanden ist?

A

Der Zuweisungsoperator sollte überladen werden, um eine tiefe Kopie zu ermöglichen. Ohne Überladung würde der Standardoperator eine flache Kopie durchführen, was zu Speicherproblemen führen kann.

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

Was ist der Unterschied zwischen einem Default-Konstruktor und einem benutzerdefinierten Konstruktor?

A

Ein Default-Konstruktor wird automatisch erstellt, wenn keine Argumente übergeben werden. Ein benutzerdefinierter Konstruktor ermöglicht die Anpassung der Objektinitialisierung durch Parameter.

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

Wie unterscheidet sich die Speicherverwaltung für Objekte auf dem Stack und dem Heap?

A

Stack-Objekte werden automatisch erstellt und zerstört, sobald sie den Gültigkeitsbereich verlassen. Heap-Objekte müssen manuell mit ‘new’ erstellt und mit ‘delete’ freigegeben werden.

17
Q

Wie beeinflusst die ‘virtual’-Funktion die Effizienz eines Programms?

A

Virtuelle Funktionen verursachen eine gewisse Laufzeitverzögerung, da sie über die vtable aufgerufen werden. Dies ist langsamer als ein direkter Funktionsaufruf, bietet jedoch Flexibilität durch Polymorphismus.