C ++

Taikymo sritis C ++

Taikymo sritis C ++
C ++ esantis subjektas turi pavadinimą, kurį galima deklaruoti ir (arba) apibrėžti. Deklaracija yra apibrėžimas, tačiau apibrėžimas nebūtinai yra deklaracija. Apibrėžimas skiria atmintį įvardytam subjektui, tačiau deklaracija gali paskirstyti atmintį įvardytam subjektui. Deklaratyvus regionas yra didžiausia programos dalis, kurioje galioja subjekto (kintamojo) pavadinimas. Tas regionas vadinamas sritimi arba potencialia sritimi. Šiame straipsnyje paaiškinama taikymo sritis C++. Be to, norint suprasti šį straipsnį, reikalingos pagrindinės žinios C ++ kalba.

Straipsnio turinys

Deklaruojamas regionas ir taikymo sritis

Deklaratyvus regionas yra didžiausia programos teksto dalis, kurioje galioja subjekto pavadinimas. Tai regionas, kuriame nekvalifikuotas vardas gali būti naudojamas (matomas) tam pačiam subjektui nurodyti. Apsvarstykite šią trumpą programą:

# įtraukti
naudojant vardų sritį std;
anuliuoti fn ()

int var = 3;
jei (1 == 1)

cout<

int main ()

fn ();
grąžinti 0;

Funkcija fn () turi du blokus: vidinį bloką if-sąlygai ir išorinį bloką funkcijos kūnui. Identifikatorius var įvedamas ir matomas išoriniame bloke. Tai taip pat matoma vidiniame bloke su cout pareiškimu. Išoriniai ir vidiniai blokai yra vardo taikymo sritis, var.

Tačiau pavadinimą var vis tiek galima naudoti deklaruojant kitokį objektą, pvz., Plūdurą vidiniame bloke. Tai iliustruoja šis kodas:

# įtraukti
naudojant vardų sritį std;
anuliuoti fn ()

int var = 3;
jei (1 == 1)

plūdė var = 7.5;
cout<

int main ()

fn ();
grąžinti 0;

Išvestis yra 7.5. Tokiu atveju vardas var negali būti naudojamas vidiniame bloke, kad būtų nurodytas 3 vertės sveikasis skaičius, kuris buvo įvestas (deklaruotas) išoriniame bloke. Tokie vidiniai blokai vadinami potencialia išoriniame bloke deklaruotų subjektų apimtimi.

Pastaba: to paties tipo objektą, kaip ir išorinį bloką, vis tiek galima deklaruoti vidiniame bloke. Tačiau šiuo atveju vidiniame bloke galioja nauja deklaracija ir jos reikšmė, o senoji deklaracija ir jos reikšmė už vidinio bloko ribų lieka galioti išoriniame bloke.

To paties pavadinimo deklaracija vidiniame bloke paprastai nepaiso to paties pavadinimo deklaracijos už to vidinio bloko ribų. Vidiniai blokai gali įdėti kitus vidinius blokus.

Visuotinė taikymo sritis

Kai programuotojas tik pradeda rinkti failą, tai yra pasaulinė sritis. Tai iliustruoja ši trumpa programa:

# įtraukti
naudojant vardų sritį std;
plūdė var = 9.4;
int main ()

cout <cout <<::var<<'\n';
grąžinti 0;

Rezultatas yra:
9.4
9.4

Tokiu atveju deklaratyvus kintamojo regionas arba taikymo sritis prasideda nuo kablelio deklaravimo taško, tęsiasi žemyn iki failo pabaigos (vertimo vienetas).

Pagrindinės () funkcijos blokas yra skirtinga sritis; tai yra įdėta pasaulinio masto sritis. Norėdami pasiekti visuotinės apimties objektą iš kitos srities, identifikatorius naudojamas tiesiogiai arba prieš jį yra srities sprendimo operatorius: .

Pastaba: subjektas, main (), taip pat deklaruojamas visuotine apimtimi.

Blokuoti taikymo sritį

Kiekvienas sakinys „if, while“, „do“, „for“ arba „switch“ gali apibrėžti bloką. Toks teiginys yra sudėtinis teiginys. Bloke deklaruoto kintamojo vardas turi bloko taikymo sritį. Jo taikymo sritis prasideda deklaravimo vietoje ir baigiasi bloko pabaigoje. Ši trumpa programa tai iliustruoja kintamajam ident:

# įtraukti
naudojant vardų sritį std;
int main ()

jei (1 == 1)

/ * kai kurie teiginiai * /
int ident = 5;
cout</ * kai kurie teiginiai * /

grąžinti 0;

Kintamasis, pvz., Ident, deklaruojamas bloko sferoje, yra vietinis kintamasis.

Kintamasis, deklaruotas už bloko srities ribų ir virš jo, gali būti matomas bloko antraštėje (pvz.,.g., sąlyga if-blokui) ir taip pat bloke. Ši trumpa programa tai iliustruoja kintamajam, identif:

# įtraukti
naudojant vardų sritį std;
int main ()

int identif = 8;
jei (identif == 8)

cout<
grąžinti 0;

Išvestis yra 8. Čia yra du blokų apimtys: pagrindinės () funkcijos blokas ir įdėtas sakinys if-compos. Įdėtas blokas yra pagrindinė () funkcijų bloko taikymo sritis.

Deklaracijos, įvestos bloko srityje, negalima pamatyti už bloko ribų. Ši trumpa programa, kuri nekompiliuojama, tai parodo kintamuoju kintamuoju:

# įtraukti
naudojant vardų sritį std;
int main ()

jei (1 == 1)

int kintamasis = 15;

cout<grąžinti 0;

Kompiliatorius pateikia kintamojo klaidos pranešimą.

Įvestas subjektas, deklaruotas sudėtinės funkcijos antraštėje, negali būti matomas už (žemiau) junginio teiginio. Šis „ciklo“ kodas nebus kompiliuojamas, todėl bus pateiktas klaidos pranešimas:

# įtraukti
naudojant vardų sritį std;
int main ()

už (int i = 0; i<4; ++i)

cout<
cout<grąžinti 0;

Pakartotinis kintamasis i matomas ciklo bloko viduje, bet ne už ciklo bloko.

Funkcijos taikymo sritis

Funkcijos parametras matomas funkcijų bloke. Funkcijos bloke deklaruotas subjektas yra matomas nuo deklaravimo taško iki funkcijos bloko pabaigos. Tai iliustruoja ši trumpa programa:

# įtraukti
# įtraukti
naudojant vardų sritį std;
eilutė fn (eilutė str)

char stri [] = "bananai";
/ * kiti teiginiai * /
eilutė totalStr = str + juosta;
grąžinti totalStr;

int main ()

eilutė totStr = fn ("valgymas");
cout<grąžinti 0;

Rezultatas yra:
valgyti bananus

Pastaba: subjektą, deklaruotą už funkcijos ribų (virš jos), galima pamatyti funkcijų parametrų sąraše ir funkcijų bloke.

Etiketė

Etiketės sritis yra funkcija, kurioje ji rodoma. Tai iliustruoja šis kodas:

# įtraukti
naudojant vardų sritį std;
anuliuoti fn ()

goto labl;
/ * kiti teiginiai * /
labl: int inte = 2;
cout<
int main ()

fn ();
grąžinti 0;

Išvestis yra 2.

Surašymo apimtis

Neapimtas sąrašas
Apsvarstykite šį „if-block“:

jei (1 == 1)

enum a, b, c = b + 2;
cout<

Rezultatas yra 0 1 3.

Pirmoji bloko eilutė yra išvardijimas, a, b ir c yra jos išvardytojai. Surašytojo aprėptis prasideda nuo deklaravimo taško iki surašymo pridėto bloko pabaigos.

Šis teiginys nebus sudarytas, nes c deklaravimo taškas yra po a:

enum a = c + 2, b, c;

Šis kodo segmentas nebus kompiliuojamas, nes prie surašytojų pasiekiama po įtraukiančio surašymo bloko:

jei (1 == 1)

enum a, b, c = b + 2;

cout<Ankstesnis išvardijimas apibūdinamas kaip neaprašytas surašymas, o jo surašytojai - kaip neaprašyti surašytojai. Taip yra todėl, kad jis prasideda tik rezervuotu žodžiu „enum“. Surašymai, prasidedantys „enum“ klase arba „enum“ struktūra, apibūdinami kaip aprėpti sąrašai. Jų surašytojai apibūdinami kaip aprėpti surašytojai.

Taikymo srities surašymas
Šis teiginys yra tinkamas:

enum klasės nam a, b, c = b + 2;

Tai aprėpto sąrašo pavyzdys. Klasės pavadinimas yra nam. Čia surašytojo sritis prasideda nuo deklaravimo taško iki surašymo apibrėžimo pabaigos, o ne nuo įvedimo bloko pabaigos. Šis kodas nebus sudarytas:

jei (1 == 1)

enum klasės nam a, b, c = b + 2;
cout<

Klasės taikymo sritis

Normaliu mastu deklaratyvus regionas prasideda nuo taško, tada tęsiasi ir sustoja kitame taške. Taikymo sritis egzistuoja viename ištisiniame regione. Naudojant klasę, subjekto taikymo sritis gali būti skirtinguose regionuose, kurie nėra sujungti. Įvestų blokų taisyklės vis dar galioja. Tai iliustruoja ši programa:

# įtraukti
naudojant vardų sritį std;
// Bazinė klasė
klasė Cla

privatus:
int memP = 5;
saugoma:
int memPro = 9;
vieša:
anuliuoti fn ()

cout<
;
// Išvestinė klasė
„DerCla“ klasė: viešasis Cla

vieša:
int derMem = memPro;
;
int main ()

Cla obj;
obj.fn ();
DerCla derObj;
cout<grąžinti 0;

Rezultatas yra:
5
9

Cla klasėje kintamasis memP matomas deklaravimo vietoje. Po to trumpoji dalis „apsaugota“ praleidžiama, tada vėl matoma klasės nario funkcijų bloke. Išvestinė klasė praleidžiama, tada vėl matoma pagrindinėje () funkcijos srityje (bloke).

Cla klasėje deklaravimo vietoje matomas kintamasis memPro. Viešosios funkcijos fn () dalis praleidžiama, tada ji matoma išvestiniame klasės aprašymo bloke. Jis vėl matomas žemyn pagrindinėje () funkcijoje.

Taikymo srities rezoliucijos operatorius
C ++ srities skyros operatorius yra :: . Jis naudojamas norint pasiekti statinį klasės narį. Tai iliustruoja ši programa:

# įtraukti
naudojant vardų sritį std;
klasė Cla

vieša:
statinis int const mem = 5;
vieša:
statinis tuštumas fn ()

cout<
;
int main ()

cout<Cla :: fn ();
grąžinti 0;

Rezultatas yra:
5
5

Statiniai nariai matomi pagrindiniame () funkcijų bloke, prie kurio galima prisijungti naudojant srities skiriamosios gebos operatorių.

Šablono parametro apimtis

Įprasta šablono parametro pavadinimo apimtis prasideda nuo deklaravimo taško iki bloko pabaigos, kaip nurodyta šiame kode:

šabloną struktūros amžiai

T Jonas = 11;
U Petras = 12.3;
T Marija = 13;
U džiaugsmas = 14.6;
;

U ir T matomi bloke.

Šablono funkcijos prototipo sritis prasideda nuo deklaravimo taško iki funkcijos parametrų sąrašo pabaigos, kaip nurodyta šiame sakinyje:

šabloną void func (T ne, U cha, const char * str);

Tačiau kalbant apie klasės aprašą (apibrėžimą), taikymo sritis taip pat gali būti skirtingų dalių, kaip nurodyta šiame kode:

# įtraukti
naudojant vardų sritį std;
šabloną klasė „TheCla“

vieša:
T skaičius;
statinis U ch;
void func (U cha, const char * str)

cout << "There are " << num << " books worth " << cha << str << " in the store." << '\n';

statinis tuštumas (U ch)

jei (ch == 'a')
cout << "Official static member function" << '\n';

;
int main ()

TheCla obj;
obj.skaičius = 12;
obj.func ('$', "500");
grąžinti 0;

Vardas slepiasi

Vardo paslėpimo pavyzdys įvyksta, kai to paties objekto tipo pavadinimas iš naujo deklaruojamas įdėtame bloke. Tai iliustruoja ši programa:

# įtraukti
naudojant vardų sritį std;
anuliuoti fn ()

int var = 3;
jei (1 == 1)

int var = 4;
cout<
cout<
int main ()

fn ();
grąžinti 0;

Rezultatas yra:
4
3

Taip yra todėl, kad įdėto bloko varas paslėpė varį išoriniame bloke.

Galimybė pakartoti deklaraciją tuo pačiu mastu

Deklaracijos esmė yra ta, kur pavadinimas (pirmą kartą) įvedamas į jo taikymo sritį.

Funkcijos prototipas
Skirtingi subjektai, net skirtingų tipų, paprastai negali būti deklaruojami ta pačia sritimi. Tačiau funkcijos prototipą galima deklaruoti daugiau nei vieną kartą toje pačioje srityje. Tai iliustruoja ši programa su dviem funkcijų prototipais ir atitinkamu funkcijos apibrėžimu:

# įtraukti
naudojant vardų sritį std;
void fn (int num);
void fn (int num);
negaliojantis fn (int num)

cout<
int main ()

fn (5);
grąžinti 0;

Programa veikia.

Perkrautos funkcijos
Perkrautos funkcijos yra funkcijos, turinčios tą patį pavadinimą, bet skirtingus funkcijų parašus. Kaip dar vieną išimtį, perkrautas funkcijas tuo pačiu pavadinimu galima apibrėžti toje pačioje srityje. Tai iliustruoja ši programa:

# įtraukti
naudojant vardų sritį std;
negaliojantis fn (int num)

cout<
void fn (plūdės Nr.)

cout<
int main ()

fn (5);
plūdė flt = 8.7;
fn (flt);
grąžinti 0;

Rezultatas yra:
5
8.7

Perkrautos funkcijos buvo apibrėžtos pasaulinėje srityje.

Vardų srities taikymo sritis

Vardų srities taikymo sritis nusipelno savo straipsnio. Minėtas straipsnis buvo parašytas šiai svetainei „linuxhint“.com. Tiesiog įveskite paieškos žodžius „Vardų srities apimtis“ šios svetainės (puslapio) paieškos laukelyje ir spustelėkite Gerai, ir gausite straipsnį.

Taikymo sritis skirtingomis dalimis

Klasė nėra vienintelė schema, kurioje taikymo sritis gali būti skirtinga. Draugo specifikatorius, tam tikri parengto tipo specifikatoriaus naudojimo būdai ir naudojimo instrukcijos yra kitos schemos, kurių taikymo sritis yra skirtingose ​​vietose - daugiau informacijos žr. Vėliau.

Išvada

Taikymo sritis yra deklaratyvus regionas. Deklaratyvus regionas yra didžiausia programos teksto dalis, kurioje galioja subjekto pavadinimas. Pagal tam tikras programavimo schemas, pvz., Įdėtus blokus, jį galima suskirstyti į daugiau nei vieną dalį. Deklaravimo taško neturinčios dalys sudaro galimą taikymo sritį. Potenciali taikymo sritis gali turėti deklaraciją arba jos neturėti.

Kaip parodyti FPS skaitiklį „Linux“ žaidimuose
„Linux“ žaidimai gavo didelį postūmį, kai „Valve“ paskelbė „Linux“ palaikymą „Steam“ klientui ir jų žaidimams 2012 m. Nuo tada daugelis AAA ir indie ž...
Kaip atsisiųsti ir paleisti „Sid Meier Civilization VI“ sistemoje „Linux“
Įvadas į žaidimą „Civilization 6“ yra šiuolaikinė klasikinės koncepcijos, pristatytos „Age of Empires“ žaidimų serijoje, koncepcija. Idėja buvo gana p...
Kaip įdiegti ir žaisti „Doom“ sistemoje „Linux“
Įvadas į Doom „Doom“ serija atsirado 90-aisiais, išleidus originalų „Doom“. Tai buvo tiesioginis hitas, o nuo to laiko žaidimų serija gavo daugybę apd...