Static en C++
Résolu
jihane jihane
Messages postés
100
Statut
Membre
-
jihane jihane Messages postés 100 Statut Membre -
jihane jihane Messages postés 100 Statut Membre -
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
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
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) :
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;
}
#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; }