Sunteți pe pagina 1din 1

Membrii de tip static ai claselor

O variabila membru static exista inainte de a fi creat orice obiect din acea clasa. De aceea el poate fi utilizat
direct in main(). Si deoarece exista inainte de crearea unui obiect, i se poate da oricand o valoare, dar nu in clasa in
care este declarat, ci cand este definit.

#include<iostream>
using namespace std;

class Comun
{
static int static_a; //error: static int static_a = 2222; nu este permisa initializarea la declarare
int b;
public:
void init(int i) {b = i; }
void modify(int i) {static_a = i; };
void arata();
};

int Comun::static_a = 1111; //defineste static_a; ATENTIE!!!!!


//se mai poate si: int Comun::static_a; //fara sa initializam variabila deci
/* declararea lui static_a in afara cat si in interiorul clasei Comun
este necesara deoarece declararea lui static_a in interiorul
lui Comun nu determina alocarea de memorie */

void Comun::arata()
{
cout<<"static_a = "<<static_a<<" b = "<<b<<endl;
}

void main()
{
Comun x, y;

x.init(2);
x.arata(); //output: "static_a = 1111 b = 2"

y.init(3);
y.arata(); //output: "static_a = 1111 b = 3"

x.modify(9999); /* valoarea lui static_a este modificata,


prin urmare ea este modificata in toate
obiectele deoarece exista doar o copie a
acestei variabile care este folosita de toate
obiectele clasei */

x.arata(); //output: "static_a = 9999 b = 2;


y.arata(); //ouput: "static_a = 9999 b = 3;
}

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