}
care închide definiția funcției), dar nu și în afara ei:
|
|
|
|
|
|
bloc interior: x: 50 y: 50 bloc exterior: x: 10 y: 50 |
y
este vizibil în blocul interior și, deci, accesarea lui y
rerpezintă accesarea variabilei exterioare.namespace identificator { entitati_denumite } |
identificator
este orice identificator valid și entitati_denumite
reprezintă un set de variabile, tipuri și funcții incluse în spațiile de nume. De exemplu:
|
|
a
și b
sunt variabile obișnuite declarate în interiorul spațiului de nume spatiul_meu
.a
respectiv b
); dar, pentru a putea fi accesate din afara spațiului spatiul_meu
ele trebuie să fie precedate de spațiu și operatorul de domeniu ::
. De exemplu, pentru a accesa variabilele anterioare din afara lui spatiul_meu
ar trebui calificate astfel:
|
|
|
|
5 6.2832 3.1416 |
valoare
. Una este definită în spațiul de nume foo
, iar cealaltă în bar
. Datorită spațiilor de nume nu se produc erori de redefinire. Să observăm că pi
este accesat normal (necalificat) în interiorul spațiului de nume bar
(doar ca pi
), în timp ce în interiorul lui main
trebuie să fie calificat ca bar::pi
.
|
|
a
și c
sunt în spațiul de nume foo
, în timp ce b
este în spațiul de nume bar
. Spațiile de nume pot chiar să se extindă în mai multe unități (adică în mai multe fișiere de cod sursă).using
adaugă un nume în regiunea declarativă curentă (de exemplu, un bloc), nemaifiind nevoie să calificăm acel nume. De exemplu:
|
|
5 2.7183 10 3.1416 |
main
variabila x
(fără calificarea numelui) se referă la unu::x
, în timp ce y
se referă la doi::y
, așa cum precizează declarațiile using
. Variabilele unu::y
și doi::x
pot fi accesate, dar trebuie calificate.using
poate fi folosit și ca o directivă pentru a include un întreg spațiu de nume:
|
|
5 10 3.1416 2.7183 |
unu
, folosirea directă a lui x
și y
, fără calificarea identificatorilor, va face căutarea în spațiul de nume unu
.using
și using namespace
sunt valide numai în același bloc în care sunt precizate sau în întregul fișier sursă dacă sunt folosite la nivel global. De exemplu, este posibil să folosim mai întâi obiecte ale unui spațiu de nume, apoi pe cele din altul dacă împărțim codul în blocuri diferite:
|
|
5 3.1416 |
namespace noul_nume = nume_curent;
std
. De fapt, cele mai multe exemple din acest tutorial, includ următoarea linie:
|
|
std
, în codul sursă. Așa procedăm și în acest tutorial pentru a-l face mai ușor de înțeles și pentru ca exemplele să fie mai scurte, dar mulți programatori preferă să califice fiecare element din biblioteca standard folosit în programe. De exemplu, în loc de:
|
|
|
|
std
sunt introduse cu declarații using
, fie că sunt calificate la fiecare folosire, comportamentul sau eficiența programului nu se schimbă în nici un fel. Ține mai mult de stilul preferat, deși se preferă calificarea explicită în cazul proiectelor care folosesc mai multe biblioteci.
|
|
0 4285838 |
x
va fi sigur zero. y
poate conține, de fapt, orice valoare (inclusiv zero).Previous: Supraîncărcare și șabloane | Index | Next: Tablouri |