lesson 5 value vs reference Flashcards
Was sind Klassenvariablen und -funktionen?
Klassenvariablen und -funktionen existieren für die gesamte Klasse und nicht für ein einzelnes Objekt. Sie werden mit dem ‘static’-Schlüsselwort deklariert und teilen sich den Speicherplatz.
Wie unterscheiden sich Objektvariablen und Klassenvariablen?
Objektvariablen gehören zu einem spezifischen Objekt und haben für jedes Objekt einen eigenen Wert. Klassenvariablen existieren unabhängig von einzelnen Objekten und existieren nur einmal pro Klasse.
Was ist der Zweck von Klassenvariablen und -funktionen?
Sie bieten die Möglichkeit, Daten und Funktionen auf Klassenebene zu definieren, die von allen Objekten der Klasse geteilt werden. Sie ermöglichen gemeinsame Ressourcen oder Funktionen, ohne ein Objekt zu benötigen.
Was ist der Unterschied zwischen Identität und Gleichheit?
Identität bedeutet, dass zwei Objekte dieselbe Instanz sind, während Gleichheit bedeutet, dass sie denselben Wert oder dieselben Attributwerte haben, auch wenn sie unterschiedliche Instanzen sind.
Was ist Value Semantics?
Bei Value Semantics wird eine Kopie eines Objekts erstellt. Änderungen an dieser Kopie haben keine Auswirkungen auf das Original.
Was ist Reference Semantics?
Bei Reference Semantics wird eine Referenz auf das Objekt übergeben. Änderungen an der Referenz wirken sich auf das ursprüngliche Objekt aus.
Wie beeinflusst Value Semantics den Zuweisungsoperator (=)?
Value Semantics erstellt eine Kopie des rechten Operanden und überschreibt den linken Operanden mit dieser Kopie. Beide Operanden sind danach unabhängig voneinander.
Wie beeinflusst Reference Semantics den Zuweisungsoperator (=)?
Reference Semantics kopiert die Speicheradresse des rechten Operanden und überschreibt die Referenz des linken Operanden. Beide Operanden zeigen danach auf dasselbe Objekt.
Was ist der Unterschied zwischen Call-by-Value und Call-by-Reference?
Call-by-Value übergibt eine Kopie der Argumente an eine Funktion, während Call-by-Reference eine Referenz auf die Originaldaten übergibt.
Welche Programmiersprachen verwenden überwiegend Value Semantics und Reference Semantics?
C++ verwendet beide Semantiken. Java und Python verwenden Reference Semantics für Objekte und Value Semantics für primitive Datentypen.
Was sind die Vor- und Nachteile von Reference Semantics?
Vorteile: Effizienter, da keine Kopien erstellt werden. Nachteile: Unerwartete Nebeneffekte durch geteilte Referenzen, erfordert sorgfältiges Speicher-Management.
Was sind die Vor- und Nachteile von Value Semantics?
Vorteile: Kopien sind unabhängig, keine Nebeneffekte. Nachteile: Erfordert mehr Speicher und ist weniger effizient aufgrund der Kopieraktionen.
Was bedeutet „Identity vs. Equality“ in C++?
Identität wird durch den Vergleich von Speicheradressen überprüft. Gleichheit wird durch das Überladen des Vergleichsoperators ‘==’ definiert, um benutzerdefinierte Gleichheitskriterien zu implementieren.