Latest web development tutorials

la classe de stockage de C

Classe de stockage définit un C ++ variables de programme / plage de fonction (visibilité) et le cycle de vie. Ces spécificateurs placés avant qu'ils modifient le type. Ci-dessous sont de classe C ++ programmes de stockage sont disponibles:

  • auto
  • enregistrer
  • statique
  • externe
  • mutable

classe de stockage automatique

classe de stockageautomatique est toute classe des variables de stockage par défaut local.

{
   int mount;
   auto int month;
}

L'exemple ci-dessus définit deux variables avec la même classe de stockage, auto ne peuvent être utilisés dans une fonction, à savoir l'automobile ne modifie que la variable locale.

enregistrer la classe de stockage

enregistrer la classe de stockage est utilisé pour définir stocké dans des registres au lieu de RAM dans les variables locales.Cela signifie que la taille maximale de la variable est égale à la taille du registre (généralement un mot) et ne peut pas être appliquée à ce unaire '&' opérateur (car elle n'a pas de position de mémoire).

{
   register int  miles;
}

Besoin seulement vous inscrire pour un accès rapide à des variables telles que la lutte contre. Il convient également de noter que la définition de «registre» ne signifie pas que la variable sera stockée dans un registre, cela signifie que la variable peut être stocké dans un registre, en fonction des limites du matériel et la mise en œuvre.

classe de stockage statique

classe de stockagestatique indique au compilateur de garder l'existence de variables locales dans le cycle de vie du programme, sans avoir à entrer chaque fois que vous sortez de la portée et être créés et détruits.Par conséquent, l'utilisation de variables locales statiques peuvent être modifiées pour maintenir la valeur des variables locales entre les appels de fonction.

static peut être appliqué à des variables globales. Lorsque la variable globale statique modifiée, la variable va limiter la portée de la déclaration dans ses dossiers.

En C ++, lorsqu'il est utilisé sur les membres statiques de données de classe, tous les objets se traduira par une seule copie de la classe des membres sont partagés.

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    while(count--)
    {
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

Lorsque le code ci-dessus est compilé et exécuté, il produit les résultats suivants:

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

classe de stockage extern

classe de stockageexterne est utilisé pour fournir une référence à une variable globale, la variable globale pour tous les fichiers de programme sont visibles.Lorsque vous utilisez 'extern', qui ne peut pas initialiser une variable, le nom de la variable pointe vers un emplacement de stockage défini précédemment.

Lorsque vous avez plusieurs documents et de définir une variable globale ou d'une fonction qui peut être utilisé dans d' autres documents, vous pouvez utiliserexterndans d' autres fichiers pour obtenir une référence de variable ou une fonction définie. Il peut êtrecompris,extern est utilisé pour déclarer une variable globale ou d'une fonction dans un autre fichier.

modificateur extern est habituellement utilisé quand il y a deux ou plusieurs fichiers partagent les mêmes variables ou des fonctions du temps global, comme suit:

Premier fichier: main.cpp

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

Le deuxième fichier: support.cpp

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

Ici, le deuxième mot - clé fichierexternest utilisé pour déclarer le premier chef d' accusation a été défini dans le fichier main.cpp dans le. Maintenant, compiler les deux fichiers, comme suit:

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

Cela génèreécrire programme exécutable tente d'effectuer écriture,il va produire les résultats suivants:

$ ./write
Count is 5

classe de stockage mutable

spécificateurmutable applique uniquement aux classes d'objets, qui seront à la fin de ce tutoriel pour expliquer.Il permet aux membres des constantes objet de substitution. Autrement dit, membre mutable peut être modifié par des fonctions membres const.