Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

Storage Classes in C++ Begrijpen: Scope, Levensduur en Gebruik

Een storage class definieert de scope (zichtbaarheid) en levensduur van variabelen en/of functies binnen een C++ programma. Deze specifiers gaan het type vooraf dat ze wijzigen. Er zijn de volgende storage classes, die in een C++ programma gebruikt kunnen worden:

  • auto
  • register
  • static
  • extern
  • mutable

De auto Storage Class

De auto storage class is de standaard storage class voor alle lokale variabelen.

 { int mount; auto int month; } 

Het bovenstaande voorbeeld definieert twee variabelen met dezelfde storage class. auto kan alleen binnen functies gebruikt worden, d.w.z. lokale variabelen.

De register Storage Class

De register storage class wordt gebruikt om lokale variabelen te definiëren die in een register opgeslagen moeten worden in plaats van RAM. Dit betekent dat de variabele een maximale grootte heeft gelijk aan de registergrootte (meestal één woord) en de unaire '&' operator niet kan worden toegepast (aangezien het geen geheugenlocatie heeft).

 { register int miles; } 

De register moet alleen gebruikt worden voor variabelen die snelle toegang vereisen, zoals tellers. Het moet ook opgemerkt worden dat het definiëren van 'register' niet betekent dat de variabele in een register opgeslagen zal worden. Het betekent dat het KAN in een register opgeslagen worden, afhankelijk van hardware- en implementatiebeperkingen.

De static Storage Class

De static storage class instructeert de compiler om een lokale variabele gedurende de levensduur van het programma in stand te houden in plaats van het telkens te creëren en te vernietigen wanneer het in en uit scope komt. Daarom stelt het maken van lokale variabelen static hen in staat hun waarden tussen functie-aanroepen te behouden.

De static modifier kan ook worden toegepast op globale variabelen. Wanneer dit gedaan wordt, zorgt het ervoor dat de scope van die variabele beperkt wordt tot het bestand waarin het gedeclareerd is.

In C++, wanneer static wordt gebruikt op een class data member, zorgt het ervoor dat slechts één kopie van dat member gedeeld wordt door alle objecten van de klasse.

Live Demo
 #include <iostream>
// Functie declaratie
void func(void);
static int count = 10; /* Globale variabele */
main() {
  while(count--) {
    func();
  }
  return 0;
}
// Functie definitie
void func( void ) {
  static int i = 5; // lokale static variabele
  i++;
  std::cout << "i is " << i ;
  std::cout << " and count is " << count << std::endl;
} 

Wanneer de bovenstaande code gecompileerd en uitgevoerd wordt, produceert het het volgende resultaat:

 i is 6 and count is 9
 i is 7 and count is 8
 i is 8 and count is 7
 i is 9 and count is 6
 i is 10 and count is 5
 i is 11 and count is 4
 i is 12 and count is 3
 i is 13 and count is 2
 i is 14 and count is 1
 i is 15 and count is 0 

De extern Storage Class

De extern storage class wordt gebruikt om een referentie te geven van een globale variabele die zichtbaar is voor ALLE programma-bestanden. Wanneer u 'extern' gebruikt, kan de variabele niet geïnitialiseerd worden, want alles wat het doet is de variabelenaam wijzen naar een opslaglocatie die eerder gedefinieerd is.

Wanneer u meerdere bestanden hebt en u een globale variabele of functie definieert, die in andere bestanden ook gebruikt zal worden, dan zal extern in een ander bestand gebruikt worden om referentie te geven aan de gedefinieerde variabele of functie. Nett voor het begrip: extern wordt gebruikt om een globale variabele of functie in een ander bestand te declareren.

De extern modifier wordt het meest gebruikt wanneer er twee of meer bestanden dezelfde globale variabelen of functies delen, zoals hieronder uitgelegd.

Eerste Bestand: main.cpp

 #include <iostream>
int count;
extern void write_extern();
main() {
  count = 5;
  write_extern();
} 

Tweede Bestand: support.cpp

 #include <iostream>
extern int count;
void write_extern(void) {
  std::cout << "Count is " << count << std::endl;
} 

Hier wordt het extern trefwoord gebruikt om count in een ander bestand te declareren. Compileer nu deze twee bestanden als volgt:

 $g++ main.cpp support.cpp -o write 

Dit produceert het write uitvoerbare programma. Probeer write uit te voeren en controleer het resultaat:

 $./write
5 

De mutable Storage Class

De mutable specifier is alleen van toepassing op class-objecten, die later in deze tutorial besproken worden. Het stelt een lid van een object in staat om een const member functie te overschrijven. Dat wil zeggen, een mutable lid kan worden gewijzigd door een const member functie.

C Taal

  1. C++ operators: complete gids met praktische voorbeelden
  2. C++ klassen & objecten: praktische gids voor object-georiënteerd programmeren
  3. C++ Friend Functies en Friend Classes: Toegangscontrole Beheersen
  4. C++ Class Templates Beheersen: Een Praktische Gids
  5. C-opslagklassen begrijpen: Bereik, levensduur en prestaties
  6. C-opslagklassen: Scope, levensduur en gebruik
  7. Polymorfisme in C++ Begrijpen: Een Praktische Gids
  8. Data Abstractie in C++ Beheersen: Ontwerp Vereenvoudigen met Interface-Implementatie Scheiding
  9. Data Encapsulatie in C++: Uw Code Beschermen
  10. C++ Interfaces: Abstracte Klassen & Pure Virtual Functions Beheersen
  11. C# Klassen Beheersen: Blauwprint voor Krachtig Objectgeoriënteerd Programmeren