Životni vek objekta

Objekti se uvode u program preko deklaracija.
U nekim slučajevima, kompajler može da generiše kôd koji kreira objekte za sopstvene potrebe.
Objektima se dodeljuje ime (naziv) prilikom deklarisanja.
Imenovani objekti mogu se koristiti samo u oblastima važenja (engl. scopes ; opseg vidljivosti) u kojima su definisani.

Objekti se mogu koristiti samo unutar oblasti u kojima su definisani.

Postoje tri vrste oblasti važenja:

  • lokalna oblast (engl. local scope), koja obuhvata objekte definisane u blokovima koda;
  • oblast fajla (file scope), koja obuhvata objekte u fajlu, ali izvan svih blokova i klasa;
  • oblast klase (class scope), koja obuhvata objekte deklarisane kao podatke članove klase.

Objekti oblasti fajla smatra se da su globalni.

Životni vek nekog objekta određen je njegovom klasom memorisanja (storage class):

  • Automatski. Objekti deklarisani unutar bloka smatra se da su automatski. Automatski objekti se kreiraju i inicijalizuju svaki put kada kontrola toka program dostigne svoju definiciju a uništavaju po izlasku iz bloka.
  • Statički. Objekti sa prefiksom static su statički i postoje i zadržavaju svoje vrednosti u toku celog izvršavanja programa. Globalni objekti su takođe statični. Statični objekti se kreiraju i inicijalizuju pre prvog korišćenja bilo koje funkcije u konkretnoj translacionoj jedinici. Podrazumeva se da se statički objekti automatski inicijalizuju na nulu.

C++ obezbeđuje mehanizme za osiguravanje da se vaši objekti odgovarajuće inicijalizuju pre nego što se koriste.
Kako vaši objekti ulaze i izlaze iz oblasti važenja, memorija se alocira/dealocira (rezerviše/oslobađa) za njih a zatim se ta memorija inicijalizuje.
C++ obezbeđuje specijalnu funkciju članicu za inicijalizaciju objekta koja se naziva konstruktor.

Konstruktor se poziva kadgod se neki objekat kreira.
Objekti se mogu kreirati:

  • kao globalne promenljive,
  • kao lokalne promenljive,
  • preko eksplicitnog korišćenja operatora new,
  • preko eksplicitnog poziva konstruktora ili kao privremeni objekat.

Konstruktori se takođe pozivaju kada se neki objekat kreira kao deo drugog objekta.
Slično, kada vaš objekat izađe iz oblasti važenja, memorija koju je koristio taj objekat mora se „očistiti”.

C++ obezbeđuje specijalnu funkciju članicu , tzv. destruktor, koja se poziva kadgod se vaš objekat uništava tako da možete da obavite bilo koji proces čišćenja, kao što je oslobađanje memorije ili drugih sistemskih resursa koje je koristio objekat.

C++ takođe obezbeđuje još dve specijalne funkcije koje imaju specijalnu ulogu.
Kadgod neki objekat mora da se kopira, uvodi se njegov konstruktor za kopiranje (engl. copy constructor).
Konačno, kadgod se nekom objektu dodeljuje vrednost, uvodi se njegov operator dodeljivanja.


Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
Unless otherwise stated, the content of this page is licensed under GNU Free Documentation License.