Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Classes de stockage en C++

Une classe de stockage définit la portée (visibilité) et la durée de vie des variables et/ou des fonctions dans un programme C++. Ces spécificateurs précèdent le type qu'ils modifient. Il existe les classes de stockage suivantes, qui peuvent être utilisées dans un programme C++

La classe de stockage automatique

La auto la classe de stockage est la classe de stockage par défaut pour toutes les variables locales.

{
   int mount;
   auto int month;
}

L'exemple ci-dessus définit deux variables avec la même classe de stockage, auto ne peut être utilisé que dans des fonctions, c'est-à-dire des variables locales.

La classe de stockage du registre

Le registre La classe de stockage est utilisée pour définir des variables locales qui doivent être stockées dans un registre au lieu de la RAM. Cela signifie que la variable a une taille maximale égale à la taille du registre (généralement un mot) et que l'opérateur unaire '&' ne peut pas lui être appliqué (car il n'a pas d'emplacement mémoire).

{
   register int  miles;
}

Le registre ne doit être utilisé que pour les variables nécessitant un accès rapide telles que les compteurs. Il convient également de noter que définir 'registre' ne signifie pas que la variable sera stockée dans un registre. Cela signifie qu'il POURRAIT être stocké dans un registre en fonction des restrictions matérielles et de mise en œuvre.

La classe de stockage statique

Le statique La classe de stockage indique au compilateur de conserver une variable locale pendant toute la durée de vie du programme au lieu de la créer et de la détruire à chaque fois qu'elle entre et sort de la portée. Par conséquent, rendre les variables locales statiques leur permet de conserver leurs valeurs entre les appels de fonction.

Le modificateur statique peut également être appliqué aux variables globales. Lorsque cela est fait, la portée de cette variable est limitée au fichier dans lequel elle est déclarée.

En C++, lorsque static est utilisé sur un membre de données de classe, une seule copie de ce membre est partagée par tous les objets de sa classe.

Démo en direct
#include <iostream>
 
// Function declaration
void func(void);
 
static int count = 10; /* Global variable */
 
main() {
   while(count--) {
      func();
   }
   
   return 0;
}

// Function definition
void func( void ) {
   static int i = 5; // local static variable
   i++;
   std::cout << "i is " << i ;
   std::cout << " and count is " << count << std::endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant −

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

La classe de stockage externe

L'externe La classe de stockage est utilisée pour donner une référence à une variable globale visible par TOUS les fichiers du programme. Lorsque vous utilisez 'extern', la variable ne peut pas être initialisée car elle ne fait que pointer le nom de la variable vers un emplacement de stockage préalablement défini.

Lorsque vous avez plusieurs fichiers et que vous définissez une variable ou une fonction globale, qui sera également utilisée dans d'autres fichiers, alors extern sera utilisé dans un autre fichier pour donner la référence de la variable ou de la fonction définie. Juste pour comprendre extern est utilisé pour déclarer une variable globale ou une fonction dans un autre fichier.

Le modificateur extern est le plus couramment utilisé lorsqu'il y a deux fichiers ou plus partageant les mêmes variables globales ou fonctions, comme expliqué ci-dessous.

Premier fichier :main.cpp

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

Deuxième fichier :support.cpp

#include <iostream>

extern int count;

void write_extern(void) {
   std::cout << "Count is " << count << std::endl;
}

Ici, externe Le mot clé est utilisé pour déclarer count dans un autre fichier. Compilez maintenant ces deux fichiers comme suit −

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

Cela produira écrire programme exécutable, essayez d'exécuter write et vérifier le résultat comme suit −

$./write
5

La classe de stockage mutable

Le mutable Le spécificateur s'applique uniquement aux objets de classe, qui sont abordés plus loin dans ce didacticiel. Il permet à un membre d'un objet de remplacer la fonction membre const. Autrement dit, un membre mutable peut être modifié par une fonction membre const.


Langue C

  1. Opérateurs C++
  2. Classes et objets C++
  3. Fonction amie C++ et classes amies
  4. Modèles de classe C++
  5. Classe de stockage C
  6. C - Classes de stockage
  7. Polymorphisme en C++
  8. Abstraction de données en C++
  9. Encapsulation de données en C++