Variable statique C ++

Variable statique C ++
«Static est un mot-clé ou un modificateur en C ++ qui fait référence à un type, pas une instance. Par conséquent, l'accès aux membres statiques ne nécessite pas d'instance. Les champs, méthodes, constructeurs, classes, propriétés, opérateurs et événements peuvent tous être statiques en C++. Il enregistre la mémoire car nous n'avons plus besoin de créer une instance pour accéder aux membres statiques. De plus, parce qu'il est membre du type, une instance de celui-ci ne sera pas créée à chaque fois que la mémoire est utilisée. Différents exemples des différentes façons d'utiliser statique en C ++ sont présentés dans cet article. Les méthodes d'utilisation statique en C ++ sont détaillées ici. Ils montrent comment fonctionnent les différentes méthodes et comment elles peuvent être utilisées de diverses manières."

Exemple 1

Voyons cette première instance d'une variable statique en C++.

#inclure
#inclure
Utilisation de Namespace Std;
void my_demo ()

static int count_val = 0;
couter<count_val ++;

int main()

pour (int i = 0; i<4; i++)
My_demo ();
retour 0;

Dans la fonction «my_demo», nous avons créé la variable statique «count_val» en utilisant le mot-clé statique et en le définissant avec la valeur zéro. Après cela, le count_val est incrémenté pour l'appel de fonction suivante. Ensuite, nous avons la fonction principale où nous avons une boucle pour l'itération et invoque la fonction «my_demo».

Le résultat du script variable statique ci-dessus est le suivant:

Exemple 2

Les variables statiques d'une classe sont accessibles par les objets car ils se voient attribuer un espace dans un stockage statique séparé, ce qui signifie que les variables marquées comme statiques sont initialisées une seule fois. Les mêmes variables statiques ne peuvent pas être utilisées plus d'une fois pour différents objets. De plus, à cause de cela, les constructeurs ne peuvent pas initialiser les variables statiques. En conséquence, l'utilisateur a besoin d'initialiser manuellement les variables statiques à l'intérieur des classes en utilisant le nom de classe et l'opérateur de résolution de portée au-delà de la classe, comme illustré ci-dessous:

#inclure
Utilisation de Namespace Std;
classe myclass

public:
statique int x;
Ma classe()

// corps vide
;
;
int myclass :: x = 2;
int main()

MyClassobj;
couter<

Nous avons établi une classe «MyClass», qui est maintenue publique. Ensuite, nous avons défini une variable statique «x». Ensuite, nous avons créé le constructeur de la classe «myclass», qui ne fait rien à cause de son corps vide. En dehors de la classe, nous avons explicitement initialisé la variable statique «x» avec la résolution de portée «::». Ensuite, à l'intérieur de l'int Main, nous avons déclaré l'objet «obj» en invoquant le «myclasse» et en imprimant sa valeur.

La valeur de la variable statique x définie dans le script ci-dessus s'affiche ci-dessous.

Exemple 3

Comme vous pouvez le voir dans le programme ci-dessus, nous avons fait un effort pour faire plusieurs doublons de la variable statique pour divers objets. Mais cela n'a pas eu lieu.

#inclure
Utilisation de Namespace Std;
classe myclass2

int a;
public:
MyClass2 ()

a = 0;
couter<< " Constructor Body\n";

~ MyClass2 ()

couter<< "Destructor Body\n";

;
int main()

int b = 0;
if (b == 0)

MyClass2 obj;

couter<< "Main Terminated\n";

Nous avons établi une classe, «MyClass2», et déclaré un objet comme «A». Ensuite, nous avons défini le constructeur de «myClass2», qui initialise l'objet «A» avec la valeur zéro. De plus, il couvrera la déclaration «Corps du constructeur». De plus, nous avons construit le destructeur de la classe «MyClass2», qui imprime uniquement la déclaration «Body Destructor». Après cela, nous avons créé la fonction principale int, qui définit et initialise un autre objet comme un ensemble «b» comme zéro. De plus, nous avons une instruction IF qui a la condition que l'objet «B» est égal à la valeur zéro, puis définit l'objet MyClass2 constructeur comme «OBJ». En fin de compte, nous avons appelé la commande cout, qui imprimera le message du principal terminé.

Le résultat suivant est imprimé sur l'invite.

Exemple 4

L'objet est désigné comme non statique dans le programme If Block du programme susmentionné. Par conséquent, la portée de la variable est limitée au bloc IF. En conséquence, le constructeur de fonction est appelé lorsqu'un objet est créé, et le destructeur est appelé dès que le contrôle du bloc IF n'est plus en vigueur parce que la portée d'un objet est limitée au bloc IF, où il est déclaré. Examinons maintenant comment la sortie changera si nous déclarons que l'objet est statique.

#inclure
Utilisation de Namespace Std;
classe myclass3

int x = 0;
public:
MyClass3 ()

x = 0;
couter<< "Constructor Section\n";

~ MyClass3 ()

couter<< "Destructor Section\n";

;
int main()

int y = 0;
if (y == 0)

statique myclass3 obj;

couter<< "Main Ended\n";


Nous avons créé la classe «MYCLAS3» comme dans le programme ci-dessus. Ensuite, nous avons défini la variable X et lui avons attribué une valeur de zéro. Le constructeur et le destructeur sont également établis à l'intérieur de la classe «MyClass3». Dans l'ensemble, si la déclaration conditionnelle, nous avons déclaré l'objet statique de «myClass3».

Le changement de performance est évident. Parce que le destructeur est appelé dans l'écran de l'invite suivant après la principale, cela a eu lieu à la suite de la durée de vie du programme couvert par des objets statiques.

Exemple 5

L'existence de fonctions de membres statiques au sein d'une classe est indépendante de tout objet de classe, comme celui des membres de données statiques ou des variables statiques. Contrairement aux membres de données non statiques de la classe et aux fonctions des membres, les fonctions des membres statiques ne sont autorisées qu'à l'accès à d'autres fonctions de membres statiques ou à d'autres membres de données statiques.

#inclure
Utilisation de Namespace Std;
classe new_class

public:
statique void display_msg ()

couter<<"Welcome to my portal";

;
int main()

New_class :: display_msg ();

La classe «new_class» a un modificateur public qui définit la fonction de membre void statique comme «display_msg». À l'intérieur de cette fonction de membre statique «display_msg», nous avons imprimé l'instruction COUT. En dehors du «new_class», nous avons la méthode principale du programme où nous avons invoqué la fonction membre statique «display_msg».

La sortie imprime le message à l'intérieur de la fonction membre statique «display_msg» comme suit:

Conclusion

Notre compréhension de l'idée statique en C ++ peut être basée sur l'article susmentionné. Dans la zone de stockage statique, les articles statiques ne sont jamais alloués que lors d'un programme. De plus, ils sont valables pour toute la période du programme. Ce guide traite des différentes techniques d'utilisation statique ainsi que des exemples de travail. L'utilisation des concepts en fonction des besoins du programmeur sera plus facile à l'aide des exemples.