Sobes.tech
Junior

Co jsou referenční datové typy?

sobes.tech AI

Odpověď od AI

Odkazové typy neukládají samotnou hodnotu, ale odkaz (adresu v paměti) na místo, kde je tato hodnota uložena. Při přiřazení nebo předání těchto dat se kopíruje pouze odkaz, nikoli celý objekt. Změny provedené přes jeden odkaz budou viditelné při přístupu přes jiné odkazy ukazující na stejný objekt.

Příklady odkazových typů v různých jazycích:

  • Java: Třídy (String, Object, vlastní třídy), rozhraní, pole.
  • C#: Třídy (string, object, vlastní třídy), rozhraní, delegáti, pole.
  • Python: Všechny datové typy (seznamy, slovníky, n-tice, množiny, třídy, funkce).
# Příklad v Pythonu
list1 = [1, 2, 3]
list2 = list1  # list2 odkazuje na stejný seznam jako list1

list2.append(4)

print(list1)  # Výstup: [1, 2, 3, 4]
print(list2)  # Výstup: [1, 2, 3, 4]

Rozdíl oproti hodnotovým typům je v tom, že hodnotové typy ukládají hodnotu samou, a při přiřazení nebo předání se kopíruje celá hodnota.

Příklad srovnání:

Charakteristika Hodnotové typy Odkazové typy
Uložení Samotná hodnota Odkaz na hodnotu
Přiřazení/předání Kopie hodnoty Kopie odkazu
Změna Neovlivní originál Mění originál
Příklad (C#) int, struct, enum class, interface, array