Static en C++

Résolu
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,



svp pour quoi en déclare une valeur dans un programme C++ comme étant static et merci d'avance pour votre future réponse

2 réponses

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ce ne sont pas des valeurs que l'on déclare "static", mais des variables, ou des méthodes.
Cela signifie qu'elles ont un comportement "de classe" peu importe l'objet courant this.
Une variable static a donc une seule valeur (éventuellement modifiable) peu importe que l'on utilise un objet a, b, ou c...

Exemple (très approximatif) :

static int x = 0; // compte le nombre d'objets instanciés.

MaClasse::MaClasse() { x++; }
void MaClasse::~MaClasse() { x--; }
void static MaClasse::afficher() { std::cout << x << std::endl; }

int main(void)
{
    MaClasse::afficher(); // 0

    MaClasse a();
    MaClasse::afficher(); // 1
    a.afficher(); // 1

    {
        MaClasse b();
        MaClasse::afficher(); // 2
        a.afficher(); // 2
        b.afficher(); // 2
    }

    MaClasse::afficher(); // 1
    a.afficher(); // 1
    
    return 0;
}
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Code correct à tester (et comprendre)

#include <iostream>

class MaClasse
{
private:

	static int x; // compte le nombre d'objets instanciés.

public:

	MaClasse()
	{
		x++;
	}

	~MaClasse()
	{
		x--;
	}

	void static afficher()
	{
		std::cout << x << std::endl;
	}
};

int MaClasse::x = 0;

int main(void)
{
	MaClasse::afficher(); // 0

	MaClasse a;
	MaClasse::afficher(); // 1
	a.afficher(); // 1

	{
		MaClasse b;
		MaClasse::afficher(); // 2
 		a.afficher(); // 2
		b.afficher(); // 2
	}
	
	MaClasse::afficher(); // 1
	a.afficher(); // 1
    
	return 0;
}
0
jihane jihane Messages postés 65 Date d'inscription   Statut Membre Dernière intervention  
 
merci pour la réponse , et j'ai bien compris maintenant :)
0
Utilisateur anonyme
 
Bonjour,

Statique = constante ?

Déclare ta variable en précédent par exemple int ou double par const.

Exemple:

const int maximum = 100;


-1
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Non "static" est un mot clé de bon nombre de langages objets. Ça n'a rien à voir avec "const".
0
Utilisateur anonyme
 
Statique = constante ?

D'où ma question, merci pour l'info ;-).
0