Mikä on ero staattisten ja const-avainsanojen välillä?


Vastaus 1:

"Staattisella" ja "const" on erilainen merkitys eri tilanteissa ja kielillä.

Yksi "staattisen" (Java ja C ++) yleisimmistä käyttötavoista on luoda muuttuja, joka jaetaan objektien kesken.

Joten jos sinulla on luokka, jolla on staattinen muuttuja luokan tasolla, kaikki kyseisen luokan objektit voivat käyttää muuttujaa, mutta sillä on sama arvo kaikille objekteille. Jos yksi objekti asettaa sen arvoon “5”, kaikki muut objektit näkevät myös arvon “5”. Se luo muuttujan, joka liitetään luokkaan, ei tiettyyn esineeseen.

Ilman ”staattista” sillä olisi eri arvo jokaiselle objektille. Aina kun luot objektin, uusi muisti varataan kyseiselle arvolle. Staattisessa tilassa vain yksi muisti on varattu sille.

Java-ohjelmassa ”päämenetelmä” julistetaan ”staattiseksi”. Tämä tarkoittaa, että ”pää” voidaan kutsua suoraan luokan kautta (tässä tapauksessa JRE voi käynnistää Java-ohjelman), eikä sinun tarvitse luoda objektia menetelmän kutsumiseksi. Staattisia menetelmiä (funktiot, jotka kuuluvat luokkaan) voidaan yleensä kutsua suoraan luokan kautta, eikä niitä liitetä tiettyihin kohteisiin.

”Const” -sovelluksella vahvistetaan muuttujien arvot mihin tahansa arvoon ne annetaan, kun ne luodaan. Java-ohjelmassa ”lopullinen” tekee saman asian.

Jos kirjoitat

int someValue = 5;

Voit myöhemmin muuttaa sitä, painikkeella

someValue = 7;

Jos kirjoitat const int someValue = 5; (C ++)

Et voi myöhemmin muuttaa ”someValue” -arvoa.

Kahta avainsanaa käytetään usein yhdessä. Jos luot tämän tyyppisen luokkatason muuttujan C ++: ssa:

staattinen const myValue = 7;

Sinulla on yksi ainoa arvo (ei yksi objektia kohden) ja sen arvo on kiinteä, koska “const”.

Jos teet siitä ”julkisen”, voit käyttää sitä jopa suoraan luokan nimen kautta.

Lukuun ottamatta kokonaislukutyyppejä, C ++: ssa sinun on alustettava staattiset const-arvot erikseen niiden ilmoituksesta:

#sisältää // Yleensä .h-tiedostoluokassa Jotain {julkinen: staattinen const float PI; }; // Yleensä tehdään .cpp-tiedoston const float Jotakin :: PI = 3.141592; int main () {std :: cout << Jotain :: PI << std :: endl; }

tulosteita:

3,14159

C ++: ssa toinen "staattisen" käyttö on luoda muuttujia funktioihin, jotka säilyttävät arvonsa toimintopuhelujen välillä. Asetit heidän alkuperäisen arvon, mutta alustus siihen arvoon tapahtuu tosiasiassa vain kerran. Tämän jälkeen arvo säilyttää sen arvon, jonka olet asettanut funktion välisiin puheluihin.

Tässä on esimerkki:

#sisältää void print () {staattinen int-arvo = 0; arvo ++; std :: cout << arvo << std :: endl; } int main () {tulosta (); Tulosta(); Tulosta(); }

Tämä tulostaa:

1

2

3

C ja C ++: ssa on muitakin "staattisen" ja "const" -käyttöjä, mutta pohjimmiltaan "const" on vain muuttujan arvon vahvistaminen, jotta se ei voi muuttua, tai sen varmistaminen, että menetelmä ei voi muuttaa luokan muuttujia, kun taas ”staattinen” ohjaa muuttujan tai jonkin koodilohkon laajuutta - määrittää missä laajuudessa siihen liittyvä muisti sijaitsee.


Vastaus 2:

staattiset ohjausobjektit; const ohjaa määritettävyyttä. Staattisena ilmoitetun funktion sisällä olevan muuttujan elinikä on pidempi kuin funktion kutsu; staattiseksi julistettua globaalia muuttujaa tai funktiota ei viedä nykyisen kokoonpanoyksikön ulkopuolelle; staattiseksi ilmoitettua menetelmää tai kenttää ei liitetä luokan esiintymään. Constiksi ilmoitettua muuttujaa ei voida osoittaa.