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 |