Sobes.tech
Junior

Čo sú referenčné typy údajov?

sobes.tech AI

Odpoveď od AI

Typy údajov s odkazom neuklada samotnú hodnotu, ale odkaz (adresu v pamäti) na miesto, kde je táto hodnota uložená. Pri priraďovaní alebo odovzdávaní týchto údajov sa kopíruje iba odkaz, nie celý objekt. Zmeny vykonané prostredníctvom jednej referencie budú viditeľné pri prístupe cez iné referencie ukazujúce na ten istý objekt.

Príklady typov údajov s odkazom v rôznych jazykoch:

  • Java: Triedy (String, Object, vlastné triedy), rozhrania, polia.
  • C#: Triedy (string, object, vlastné triedy), rozhrania, delegáti, polia.
  • Python: Všetky typy údajov (zoznamy, slovníky, n-tice, množiny, triedy, funkcie).
# Príklad v Pythone
list1 = [1, 2, 3]
list2 = list1  # list2 odkazuje na ten istý zoznam ako list1

list2.append(4)

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

Rozdiel oproti hodnotovým typom je v tom, že hodnotové typy ukladajú samotnú hodnotu, a pri priraďovaní alebo odovzdávaní sa kopíruje celá hodnota.

Príklad porovnania:

Charakteristika Hodnotové typy Typy s odkazom
Uloženie Samotná hodnota Odkaz na hodnotu
Priraďovanie/predanie Kópia hodnoty Kópia odkazu
Zmena Neovplyvňuje originál Mení originál
Príklad (C#) int, struct, enum class, interface, array