Sunt variabile de clasă statice la fel ca variabilele externe, numai cu domeniul de clasă?

Mi se pare că o variabilă de clasă statică este identică cu o variabilă externă, deoarece declarați în static int x / extern int x și, de fapt, o definiți în altă parte (de obicei într-un fișier .cpp)

variabila clasa statica

// .h file
class Foo
{
    static int x ;
} ;

// .cpp file
int MyClass::x = 0 ;

Variabilele externe:

// .h file
extern int y;

// .cpp file
int y = 1;

În ambele cazuri, variabila este declarată o dată undeva și definită într-un fișier care nu va fi inclus mai mult de o dată în compilare (altceva)

6

3 răspunsuri

Da, ambele au o durată de stocare statică și o legătură externă; aceștia au, în esență, aceleași proprietăți de rulare, care diferă numai în vizibilitatea (compilație).

4
adăugat

Mai mult sau mai putin. Ambele au legătura externă și durata de viață statică. Ambii vor fi inițializate la pornirea programului și distruse la ieșire.

2
adăugat

Da.

Ca o informație suplimentară, în unele limbi de programare care folosesc spații de nume/module opționale, variabilele de clasă statice pot fi schimbate cu variabile globale.

În unele cazuri, celelalte variabile de programare nu au variabile de clasă statice și puteți folosi în schimb variabile globale.

Unii dezvoltatori preferă să utilizeze variabile de clasă statice, impunându-și relația cu clasa.

Este, de asemenea, o chestiune despre cum vă proiectați aplicația, chiar dacă ambele caracteristici sunt disponibile.

1
adăugat