C ++

Darbības joma C ++

Darbības joma C ++
Uzņēmumam C ++ ir nosaukums, kuru var deklarēt un / vai definēt. Deklarācija ir definīcija, bet definīcija ne vienmēr ir deklarācija. Definīcija piešķir atmiņu nosauktajai entītijai, bet deklarācija var piešķirt atmiņu nosauktajai entītijai. Deklaratīvais reģions ir lielākā programmas daļa, kurā ir derīgs entītijas (mainīgā) nosaukums. Šo reģionu sauc par darbības jomu vai potenciālu darbības jomu. Šis raksts izskaidro darbības jomas noteikšanu C++. Turklāt, lai saprastu šo rakstu, ir nepieciešamas pamatzināšanas C ++ valodā.

Raksta saturs

Deklaratīvais reģions un darbības joma

Deklaratīvs reģions ir lielākā programmas teksta daļa, kurā ir derīgs entītijas nosaukums. Tas ir reģions, kurā nekvalificēto nosaukumu var izmantot (redzēt), lai atsauktos uz to pašu entītiju. Apsveriet šādu īsu programmu:

# iekļaut
izmantojot nosaukumvietu std;
anulēt fn ()

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

cout<

int main ()

fn ();
atgriešanās 0;

Funkcijai fn () ir divi bloki: iekšējais bloks nosacījumam if-nosacījums un ārējais bloks funkcijas ķermenim. Identifikators var tiek ievadīts un redzams ārējā blokā. Tas ir redzams arī iekšējā blokā ar cout paziņojumu. Ārējie un iekšējie bloki ir gan nosaukuma darbības joma, var.

Tomēr nosaukumu var var joprojām izmantot, lai deklarētu citu entītiju, piemēram, pludiņu iekšējā blokā. Šis kods ilustrē to:

# iekļaut
izmantojot nosaukumvietu std;
anulēt fn ()

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

pludiņš var = 7.5;
cout<

int main ()

fn ();
atgriešanās 0;

Rezultāts ir 7.5. Šajā gadījumā nosaukumu var, iekšējā blokā vairs nevar izmantot, lai atsauktos uz 3. vērtības veselu skaitli, kas tika ieviests (deklarēts) ārējā blokā. Šādi iekšējie bloki tiek dēvēti par potenciālo darbības jomu vienībām, kas deklarētas ārējā blokā.

Piezīme. Tā paša veida entītiju, tāpat kā ārējo bloku, joprojām var deklarēt iekšējā blokā. Tomēr šajā gadījumā iekšējā blokā ir derīga jaunā deklarācija un tās nozīme, savukārt vecā deklarācija un tās nozīme ārpus iekšējā bloka paliek spēkā ārējā blokā.

Tā paša nosaukuma deklarācija iekšējā blokā parasti ignorē tā paša nosaukuma deklarāciju ārpus šī iekšējā bloka. Iekšējie bloki var ievietot citus iekšējos blokus.

Globālā darbības joma

Kad programmētājs tikko sāk rakstīt failu, tā ir globālā darbības joma. To ilustrē šāda īsa programma:

# iekļaut
izmantojot nosaukumvietu std;
pludiņš var = 9.4;
int main ()

cout <cout <<::var<<'\n';
atgriešanās 0;

Rezultāts ir:
9.4
9.4

Šajā gadījumā var deklaratīvais reģions vai darbības joma sākas ar var deklarēšanas punktu, turpinās uz leju līdz faila beigām (tulkošanas vienība).

Main () funkcijas bloks ir atšķirīgs tvērums; tā ir ligzdota globālās darbības joma. Lai piekļūtu globālā tvēruma entītijai no citas darbības jomas, identifikatoru izmanto tieši vai pirms tā ir darbības jomas izšķiršanas operators: .

Piezīme: Entītija main () tiek deklarēta arī globālajā darbības jomā.

Bloķēt darbības jomu

Katrs paziņojums if, kamēr, do, for vai switch var definēt bloku. Šāds apgalvojums ir salikts apgalvojums. Blokā deklarētā mainīgā nosaukumam ir bloka darbības joma. Tās darbības joma sākas deklarēšanas brīdī un beidzas bloka beigās. Šī mainīgā programma identiski parāda šo īso programmu:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

ja (1 == 1)

/ * daži apgalvojumi * /
int ident = 5;
cout</ * daži apgalvojumi * /

atgriešanās 0;

Mainīgais, piemēram, ident, kas deklarēts bloka darbības jomā, ir lokāls mainīgais.

Mainīgais, kas deklarēts ārpus bloka darbības jomas un virs tā, ir redzams bloka galvenē (piemēram,.g., if-block nosacījums) un arī blokā. Šī īsā programma to ilustrē mainīgajam identif:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

int identif = 8;
ja (identif == 8)

cout<
atgriešanās 0;

Rezultāts ir 8. Šeit ir divi bloku tvērumi: bloks galvenajai () funkcijai un ligzdotais ja-salikums. Ligzdots bloks ir galvenā () funkciju bloka iespējamā darbības joma.

Deklarāciju, kas ieviesta bloka darbības jomā, nevar redzēt ārpus bloka. Šī īsā programma, kas nav apkopota, to ilustrē ar mainīgo mainīgo:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

ja (1 == 1)

int mainīgais = 15;

cout<atgriešanās 0;

Sastādītājs sagatavo kļūdas ziņojumu mainīgajam.

Ievietotā entītija, kas deklarēta saliktas funkcijas galvenē, nav redzama ārpus (zemāk) saliktā paziņojuma. Šis cilpa kods netiks apkopots, kā rezultātā tiks parādīts kļūdas ziņojums:

# iekļaut
izmantojot nosaukumvietu std;
int main ()

par (int i = 0; i<4; ++i)

cout<
cout<atgriešanās 0;

Iterācijas mainīgais i ir redzams for-loop bloka iekšpusē, bet ne ārpus for-loop bloka.

Funkcijas darbības joma

Funkcijas parametrs ir redzams funkciju blokā. Funkciju blokā deklarētā entītija ir redzama no deklarēšanas punkta līdz funkciju bloka beigām. To ilustrē šāda īsa programma:

# iekļaut
# iekļaut
izmantojot nosaukumvietu std;
virkne fn (virkne str)

char stri [] = "banāni";
/ * citi paziņojumi * /
virkne totalStr = str + stri;
return totalStr;

int main ()

virkne totStr = fn ("ēd");
cout<atgriešanās 0;

Rezultāts ir:
ēd banānus

Piezīme: entītiju, kas deklarēta ārpus funkcijas (virs tās), var redzēt funkciju parametru sarakstā un arī funkciju blokā.

Etiķete

Etiķetes darbības joma ir funkcija, kurā tā parādās. Šis kods ilustrē to:

# iekļaut
izmantojot nosaukumvietu std;
anulēt fn ()

goto labl;
/ * citi paziņojumi * /
labl: int inte = 2;
cout<
int main ()

fn ();
atgriešanās 0;

Rezultāts ir 2.

Uzskaitīšanas joma

Neizskatīts uzskaitījums
Apsveriet šādu if-block:

ja (1 == 1)

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

Rezultāts ir 0 1 3.

Bloka pirmā rinda ir uzskaitījums, a, b un c ir tās uzskaitītāji. Uzskaitītāja darbības joma sākas no deklarēšanas vietas līdz skaitīšanas pievienojošā bloka beigām.

Šis apgalvojums netiks apkopots, jo c deklarēšanas punkts ir aiz a:

enums a = c + 2, b, c;

Šis koda segments netiks apkopots, jo skaitītājiem piekļūst pēc uzskaites bloka:

ja (1 == 1)

enum a, b, c = b + 2;

cout<Iepriekš minētais uzskaitījums ir aprakstīts kā nepārbaudīts uzskaitījums, un tā uzskaitītāji tiek aprakstīti kā neatļautie uzskaitītāji. Tas ir tāpēc, ka tas sākas tikai ar rezervēto vārdu enum. Uzskaitījumi, kas sākas ar enum klasi vai enum struktūru, tiek aprakstīti kā diapazona uzskaitījumi. Viņu skaitītāji tiek raksturoti kā uzskaitītie.

Darbības jomas uzskaitījums
Šis apgalvojums ir labs:

enum klases nam a, b, c = b + 2;

Šis ir piemērota uzskaites piemērs. Nodarbības nosaukums ir nam. Šeit skaitītāja darbības joma sākas no deklarēšanas punkta līdz skaitīšanas definīcijas beigām, nevis skaitīšanas pievienojošā bloka beigām. Šis kods netiks apkopots:

ja (1 == 1)

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

Klases darbības joma

Ar normālu mērogošanu deklaratīvais reģions sākas no punkta, pēc tam turpinās un apstājas citā punktā. Darbības joma pastāv vienā nepārtrauktā reģionā. Izmantojot klasi, entītijas darbības joma var būt dažādos reģionos, kas nav savienoti kopā. Joprojām tiek piemēroti ligzdoto bloku noteikumi. To ilustrē šāda programma:

# iekļaut
izmantojot nosaukumvietu std;
// Bāzes klase
klase Cla

Privāts:
int memP = 5;
aizsargāts:
int memPro = 9;
publiski:
anulēt fn ()

cout<
;
// Atvasinātā klase
klase DerCla: publiskā Cla

publiski:
int derMem = memPro;
;
int main ()

Cla obj;
obj.fn ();
DerCla derObj;
cout<atgriešanās 0;

Rezultāts ir:
5
9

Cla klasē mainīgais memP ir redzams deklarēšanas vietā. Pēc tam īsā “aizsargāto” daļa tiek izlaista, pēc tam atkal redzama klases dalībnieka funkciju blokā. Atvasinātā klase tiek izlaista, pēc tam atkal redzama galvenajā () funkcijas tvērumā (bloks).

Cla klasē mainīgais memPro ir redzams deklarēšanas vietā. Publiskās funkcijas fn () daļa tiek izlaista, pēc tam redzama atvasinātajā klases apraksta blokā. Tas atkal redzams uz leju galvenajā () funkcijā.

Darbības jomas izšķiršanas operators
Darbības jomas izšķirtspējas operators C ++ ir :: . To izmanto, lai piekļūtu statiskam klases dalībniekam. To ilustrē šāda programma:

# iekļaut
izmantojot nosaukumvietu std;
klase Cla

publiski:
statiskā int konst mem = 5;
publiski:
static void fn ()

cout<
;
int main ()

cout<Cla :: fn ();
atgriešanās 0;

Rezultāts ir:
5
5

Statiskie dalībnieki ir redzami galvenajā () funkciju blokā, kuram var piekļūt, izmantojot darbības jomas izšķirtspējas operatoru.

Veidnes parametru tvērums

Parametra parametra nosaukuma parastā darbības joma sākas no deklarēšanas punkta līdz tā bloka beigām, kā norādīts šajā kodā:

veidne struktūras laikmeti

T Jānis = 11;
U Pēteris = 12.3;
T Marija = 13;
U prieks = 14.6;
;

U un T ir redzami blokā.

Veidnes funkcijas prototipam darbības joma sākas no deklarēšanas punkta līdz funkciju parametru saraksta beigām, kā norādīts šajā paziņojumā:

veidne void func (T nē, U cha, const char * str);

Tomēr, runājot par klases aprakstu (definīciju), darbības joma var būt arī atšķirīga, kā norādīts šajā kodā:

# iekļaut
izmantojot nosaukumvietu std;
veidne klase TheCla

publiski:
T numurs;
statiskā U ch;
void func (U cha, const char * str)

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

statisks tukšums (U ch)

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

;
int main ()

TheCla obj;
obj.skaitlis = 12;
obj.func ('$', "500");
atgriešanās 0;

Vārds slēpjas

Nosaukuma slēpšanas piemērs rodas, ja viena un tā paša objekta veida nosaukums tiek atkārtoti deklarēts ligzdotā blokā. To ilustrē šāda programma:

# iekļaut
izmantojot nosaukumvietu std;
anulēt fn ()

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

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

fn ();
atgriešanās 0;

Rezultāts ir:
4
3

Tas ir tāpēc, ka ligzdotā bloka vars slēpās var ārējā blokā.

Iespēja atkārtot deklarāciju tajā pašā darbības jomā

Deklarācijas punkts ir tas, kur nosaukums (pirmo reizi) tiek ieviests tā darbības jomā.

Funkcijas prototips
Dažādas, pat dažāda veida vienības parasti nevar deklarēt vienā un tajā pašā jomā. Tomēr funkcijas prototipu vienā un tajā pašā sfērā var deklarēt vairāk nekā vienu reizi. To ilustrē šāda programma ar diviem funkciju prototipiem un atbilstošo funkciju definīciju:

# iekļaut
izmantojot nosaukumvietu std;
void fn (int num);
void fn (int num);
void fn (int num)

cout<
int main ()

fn (5);
atgriešanās 0;

Programma darbojas.

Pārslogotas funkcijas
Pārslogotas funkcijas ir funkcijas ar tādu pašu nosaukumu, bet ar atšķirīgiem funkciju parakstiem. Kā vēl vienu izņēmumu pārslogotas funkcijas ar tādu pašu nosaukumu var definēt vienā darbības jomā. To ilustrē šāda programma:

# iekļaut
izmantojot nosaukumvietu std;
void fn (int num)

cout<
void fn (pludiņa nr.)

cout<
int main ()

fn (5);
pludiņš flt = 8.7;
fn (flt);
atgriešanās 0;

Rezultāts ir:
5
8.7

Pārslogotās funkcijas ir definētas globālajā darbības jomā.

Vārdamvietas darbības joma

Namespace Scope ir pelnījis savu rakstu. Minētais raksts ir rakstīts šai vietnei linuxhint.com. Vienkārši ierakstiet meklēšanas vārdus “Namespace Scope” šīs vietnes (lapas) meklēšanas lodziņā un noklikšķiniet uz Labi, un jūs saņemsiet rakstu.

Darbības joma dažādās daļās

Klase nav vienīgā shēma, kurā darbības joma var būt dažādās daļās. Drauga specifikators, izstrādātā tipa specifikatora un lietošanas direktīvu noteiktas izmantošanas iespējas ir citas shēmas, kuru darbības joma ir dažādās vietās - sīkāku informāciju skatiet vēlāk.

Secinājums

Darbības joma ir deklaratīvs reģions. Deklaratīvs reģions ir lielākā programmas teksta daļa, kurā ir derīgs entītijas nosaukums. To var sadalīt vairākās daļās saskaņā ar noteiktām programmēšanas shēmām, piemēram, ligzdotiem blokiem. Daļas, kurām nav deklarēšanas punkta, veido potenciālo darbības jomu. Potenciālajai darbības jomai deklarācija var būt vai nebūt.

Rakstot Windows 10, kursors lec vai pārvietojas nejauši
Ja atklājat, ka peles kursors automātiski, nejauši lec vai pārvietojas pats, rakstot Windows klēpjdatorā vai datorā, daži no šiem ieteikumiem var palī...
Kā mainīt peles un skārienpaliktņu ritināšanas virzienu operētājsistēmā Windows 10
Pele un SkārienpaliktnisTas ne tikai padara skaitļošanu vienkāršu, bet arī efektīvāku un mazāk laikietilpīgu. Mēs nevaram iedomāties dzīvi bez šīm ier...
Kā mainīt peles rādītāja un kursora izmēru, krāsu un shēmu operētājsistēmā Windows 10
Peles rādītājs un kursors operētājsistēmā Windows 10 ir ļoti svarīgi operētājsistēmas aspekti. To var teikt arī par citām operētājsistēmām, tāpēc pati...