Static en C++

Résolu
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

  1. Modérateur
    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
    1. Modérateur
      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
    2. merci pour la réponse , et j'ai bien compris maintenant :)
      0
  2. Bonjour,

    Statique = constante ?

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

    Exemple:

    const int maximum = 100;


    -1
    1. Modérateur
      Non "static" est un mot clé de bon nombre de langages objets. Ça n'a rien à voir avec "const".
      0
    2. Statique = constante ?

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