type qualifiers storage classes c
Importance des qualificatifs de type et des classes de stockage en C ++.
Dans ce Série de formation C ++ exclusive , nous allons étendre le sujet des variables plus loin et voir les qualificatifs de type et les classes de stockage en C ++ dans ce tutoriel. Bien que ce soit un petit sujet, il est très important et significatif en ce qui concerne la programmation C ++.
Les qualificateurs de type en C ++ ne changent pas la signification des variables ou des entités avec lesquelles ils sont utilisés, mais ajoutent uniquement des informations supplémentaires à l'entité.
Ce que vous apprendrez:
Qualificateurs de type en C ++
Les qualificateurs de type en C ++ ajoutent des propriétés supplémentaires à la variable comme une variable étant une constante ou une volatile.
Les qualificatifs de type expriment la manière dont une variable est accédée ou où une variable est stockée dans la mémoire en conservant la signification ou l'interprétation de la variable. D'une certaine manière, les qualificatifs de type ajoutent plus de raffinement aux variables.
En C ++, le qualificateur de type est spécifié juste avant le spécificateur de type (type de données) de la variable.
Les qualificatifs de type en C ++ sont classés comme indiqué ci-dessous:
# 1) const
Le spécificateur de type «const» consiste à définir les objets de type const. Un objet ou une variable const ne peut pas être modifié une fois déclaré. Si une tentative est faite pour modifier un objet ou une variable const, le compilateur génère une erreur. Nous avons déjà vu les constantes / littéraux dans notre précédent tutoriel.
La définition des constantes à l’aide du mot-clé «const» correspond au qualificatif de type «const».
# 2) volatile
Le qualificatif de type «volatile» signifie que la valeur de la variable marquée volatile peut être modifiée par d'autres moyens qui ne sont pas spécifiés par le programme. Les variables qui sont volatiles changent généralement en raison de certains facteurs externes et pas nécessairement en raison du programme. En d'autres termes, ils sont de nature volatile.
Par exemple, une variable qui lit la température dans un mot réel peut devenir volatile car la température de lecture peut ne pas être complètement contrôlée par le programme.
# 3) mutable
Le qualificatif de type «mutable» rend les membres ou la variable modifiables.
Le qualificatif mutable est généralement appliqué aux membres de classe non statiques de type non const et non référence. Selon des situations spécifiques, nous pourrions avoir besoin que certaines variables restent immuables (ne peuvent pas être modifiées) et que certaines variables soient modifiables. Ce type de qualificatif est d'une grande utilité lorsque nous voulons des caractéristiques mutables.
Classes de stockage en C ++
Jusqu'à présent, nous avons discuté de toutes les variables C ++ en détail. Nous avons vu que les variables sont déclarées avec leurs types de données respectifs puis utilisées dans le programme. Afin de définir complètement une variable, nous avons également besoin de classes de stockage en dehors de leurs types de données.
Bien que nous n'ayons spécifié aucune classe de stockage jusqu'à présent pour les variables, il y avait une classe de stockage par défaut «auto» qui était appliquée à toutes les variables.
Alors, quelles sont les classes de stockage?
Les classes de stockage spécifient comment la variable ou une fonction doit être traitée par le compilateur et comment le stockage doit être alloué pour une variable. Il définit la visibilité ou la portée et la durée de vie d'une variable. La durée de vie de la variable correspond à la durée pendant laquelle la variable restera active.
La visibilité ou la portée de la variable est à quelles fonctions ou modules la variable sera accessible. Ces classes de stockage sont spécifiées avant le type de données de la variable.
En C ++, nous avons les classes de stockage suivantes:
# 1) Classe de stockage automatique
Il s'agit de la classe de stockage par défaut. La classe de stockage «Auto» est appliquée aux variables locales et est automatiquement affectée par le compilateur aux variables locales. Les variables locales précédées du mot-clé 'auto' restent actives dans la fonction dans laquelle elles sont déclarées et sortent du champ d'application une fois la fonction terminée.
Si les variables ayant la classe de stockage «auto» ne sont pas initialisées ou ne sont affectées d'aucune valeur, elles ont des valeurs inutiles ou non définies.
Voyons un exemple de variables automatiques dans un programme C ++.
#include using namespace std; int main() { int i; float f; cout<<'Variable i = '< Ainsi, nous n'utilisons généralement pas de déclaration pour la classe de stockage automatique car il est implicite que la valeur par défaut sera toujours la classe de stockage automatique.
# 2) Enregistrer la classe de stockage
Quand nous avons une exigence qu'une variable a besoin d'un accès plus rapide, alors nous utilisons la classe de stockage de registre. Ainsi, au lieu de stocker les variables dans la mémoire vive (RAM), ces variables sont stockées dans le registre du processeur et ont une taille égale à celle d'un registre.
De plus, comme ces variables n’ont pas d’emplacement mémoire, nous ne pouvons pas utiliser l’opérateur «&» avec ces variables.
Le fait d'avoir une variable avec la classe de stockage Register ne garantit pas que la variable sera toujours stockée dans le registre. Au lieu de cela, il suppose simplement que la variable peut être stockée dans un registre et dépend entièrement du matériel et de l'implémentation.
Les variables de registre ont une portée et une durée de vie similaires à celles des variables automatiques.
Par exemple,
#include using namespace std; int main() { int i; register float f; cout<<'Variable i = '< # 3) Classe de stockage externe La classe de stockage externe est requise lorsque les variables doivent être partagées entre plusieurs fichiers. Les variables externes ont une portée globale et ces variables sont visibles en dehors du fichier dans lequel elles sont déclarées.
Les variables externes étant les variables déclarées et définies à l'extérieur dans un autre fichier, elles ne sont pas initialisées.
Les variables externes ont une portée globale et la durée de vie des variables externes est aussi longue que le programme dans lequel elles sont déclarées comme terminées.
Les variables externes peuvent être déclarées comme suit:
extern int temp; int temp;
Dans l'exemple ci-dessus, nous avons deux déclarations de variable avec le même nom mais la première est la variable externe définie ailleurs. Cette variable externe sera utile lorsque nous incluons le fichier source dans lequel la variable externe temp est définie dans notre programme.
# 4) Classe de stockage statique
La classe de stockage statique indique au compilateur de conserver la valeur de la variable pendant toute la durée de vie du programme. Les variables statiques sont similaires aux variables locales mais sont précédées d’un mot-clé «statique».
Contrairement aux variables locales qui sortent de la portée après la sortie de la fonction, les variables statiques ne sortent pas de la portée lorsqu'une fonction ou un bloc se termine et leurs valeurs sont conservées entre les appels de fonction.
Les variables statiques sont initialisées et le stockage ne leur est alloué qu'une seule fois dans la durée de vie d'un programme. Les variables statiques sont initialisées à 0 sinon sont déjà initialisées lors de la déclaration.
Voyons l'exemple suivant pour mieux comprendre la classe de stockage statique.
#include using namespace std; void printvar() { static int var; var++; cout<<'static variable var = '< Production:
printvar appel 1: variable statique var = 1
printvar appel 2: variable statique var = 2
printvar appel 3: variable statique var = 3
printvar appel 4: variable statique var = 4
Dans le code ci-dessus, nous avons une fonction «printvar» dans laquelle nous avons déclaré une variable statique var de type int. Nous incrémentons ensuite cette variable et l'imprimons. Dans la fonction principale, nous appelons la fonction printvar quatre fois.
Vérifiez maintenant la sortie. La sortie montre qu'à chaque appel de fonction, la variable statique var est incrémentée de 1 par rapport à sa valeur précédente. Il s'agit de la classe de stockage statique qui aide la variable à conserver sa valeur entre les appels de fonction. La variable statique n'est pas réinitialisée pour chaque appel de fonction.
Nous devons également remarquer que dans la fonction printvar, nous venons de déclarer la variable statique et non de l'initialiser. Il est à noter que lorsque nous n’initialisons pas les variables statiques, elles reçoivent la valeur initiale 0.
Noter: La classe de stockage statique peut également être appliquée aux variables globales. Dans ce cas, la variable aura une portée globale et un stockage statique supplémentaire.
# 5) Classe de stockage mutable
La classe de stockage mutable est appliquée aux objets de classe uniquement. En appliquant la classe de stockage mutable, le membre d’un objet peut remplacer la fonction membre «const». Cela signifie qu’un membre ou un objet mutable peut être modifié par une fonction membre qui est «const».
Nous en apprendrons plus sur les fonctions et objets const ainsi que sur les membres mutables dans nos prochains didacticiels lorsque nous en apprendrons davantage sur la programmation orientée objet en C ++.
Conclusion
Tout est question de spécificateurs de type et de classes de stockage en C ++. Nous espérons avoir été en mesure de clarifier tous les concepts concernant les classes de stockage et les spécificateurs de type grâce à ce didacticiel.
meilleur logiciel espion à distance pour téléphones portables
Dans notre prochain tutoriel, nous en apprendrons plus sur les différents opérateurs utilisés en C ++ ainsi que sur leur utilisation.
=> Consultez la série complète de formations C ++ ici
lecture recommandée
- Variables en C ++
- Variables Python
- Tutoriel sur l'interface Java et les classes abstraites avec des exemples
- Conversions de type en C ++
- Variables VBScript: Comment déclarer et utiliser des variables - VBScript Dim
- Variables et fonctions JMeter
- 10 MEILLEURS fournisseurs de stockage cloud gratuit (stockage en ligne 2021)
- Types de tests de migration: avec des scénarios de test pour chaque type