Sunteți pe pagina 1din 8

static in contextul claselor

- Date statice : variabile de clasă, nu de obiect => Nu se aloca prin constructor, ci


explicit de programator; nu se regasesc in fiecare obiect, ci intr-un singur exemplar la
nivel de clasa; static int nrPers;

- Functii statice: nu primesc pointer this pentru a individualiza un obiect anume;


static int getNrPers() { return nrPers; }

- daca lucreaza pe obiecte, trebuie sa le primeasca explicit ca parametri;


static int countM ( const Pers * pp) { /* */ }

- calificare pornind de la clasa sau chiar de la un obiect oarecare ( cu acelasi effect):


n= Pers:: nrPers; n= p1.nrPers;
n= Pers:: countM(vp); n= p1. countM(vp);
static in afara claselor
(clasa de memorie static)
- Date statice :
- se aloca in heap; se pot aloca si cu operator new si dezaloca cu operator
delete: static Pers ps; Pers * pp= new Pers( 123, “Statica Ion”, 5900);
- se pastreaza pe toata durata executiei sau pana la dezalocare explicita cu
delete;
- blocul in care s-au definit asigura controlul vizibilitatii

- Functii independente declarate static: au vizibilitate redusa la nivelul fisierului


in care au fost definite
Translatarea adreselor virtuale
MMU
V P
I H
R Y
T S
U I
CPU
A C
L A
read or write L
(untranslated)
Heap & Stack
prog1 virtual address
code data heap stack

OS OS OS heap
cod1 data2 heap1 data1 cod2 heap2 Unused stack2 stack1
cod data & stacks

code data heap stack


prog2 virtual address
Heap & Stack
prog1 virtual address
code data heap stack

cod1 heap1 data1 Unused stack1

CS BP

DS

SP
SS
Membri de tip pointer
- necesitate
• gestiune eficientă a memoriei
• pointer la Server
• pointeri la obiecte membre (structuri de clase)
• structuri autoreferite
- elemente obligatorii in clasa
• constructori
• constructor de copiere
• destructor
• operator =
class Pers { int varsta; char* pnume; /* … */ };

operator= pus implicit de compilator (default)

20| 0x2fb8
20| 0x2fb8

Popescu Ion
Popescu Ion

20| 0x2fb8
20| 0x2fb8
p2=p1 (default) p2=p1 (default)
class Pers { int varsta; char* pnume; /* … */ };

operator= scris de programator (owner)

20| 0x2fb8 20| 0x2fb8

Popescu Ion Popescu Ion

Popescu Ion Nicula Elena

20| 0x2af4 20| 0x2af4


p2=p1 (owner) p2=p1 (owner)

S-ar putea să vă placă și