Nivelul 4 — Clase
Structuri
Note originale de SunDiaL · Vezi sursa în engleză
O structură este identică cu o clasă, cu diferența că este un tip valoare. În 95% dintre cazuri vei folosi o clasă, așa că iată doar cum definești o structură și un tabel cu diferențele dintre ele.
Definirea unei structuri
struct ThisIsMyStructNameForRealz
{
}
Diferența dintre clasă și structură
| Caracteristică | Structuri | Clase |
|---|---|---|
| Tip | Tipuri valoare, stocate pe stivă | Tipuri referință, stocate în heap, cu o referință pe stivă |
| Alocarea memoriei | Alocare/dezalocare mai rapidă pentru structuri de date mici | Au costuri suplimentare, dar oferă mai multă flexibilitate pentru obiecte complexe |
| Moștenire | Nu pot moșteni alte structuri sau clase (pot doar implementa interfețe) | Acceptă moștenirea, permițând ierarhii de clase |
| Comportamentul la atribuire | Copiază toate datele când sunt atribuite unei variabile noi | Copiază doar referința; ambele variabile indică același obiect |
| Constructori impliciți | Au constructori impliciți fără parametri, care inițializează câmpurile cu valorile implicite | Necesită constructori expliciți fără parametri, dacă aceștia sunt necesari |
| Când sunt potrivite | Structuri de date mici și simpleDurată de viață scurtă a obiectuluiObiectul nu va fi modificat după creareSe dorește semantică de valoare (copiere la atribuire)Eficiența memoriei este esențială | Obiecte complexe, cu comportamenteEste necesară moștenireaObiectul are nevoie de semantică de referințăObiectul va fi modificat după creareObiectul poate fi null |
| Exemple | Coordonate de puncte, date calendaristice, culori, obiecte matematice mici | Entități de domeniu, servicii, controlere, componente de interfață |