IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Variable static dans une fonction membre


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut Variable static dans une fonction membre
    Bonjour,

    Je crée une class contenant une fonction membre dans laquelle je déclare une variable static. Maintenant si je déclare un tableau de ma class, je me demande si cette variable static est dupliquée ou si elle n'existe qu'une seul est unique fois.

    Merci de vos lumiére

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <iostream>
     
    class Foo
    {
    public:
    	Foo() {	}
     
    	void Bar()
    	{
    		static int i = 0;
    		std::cout << i++ << std::endl;
    	}
    };
     
    int main(int argc, char **argv)
    {
    	Foo foos[10];
     
    	for (size_t i = 0; i < 10; ++i) {
    		foos[i].Bar();
    	}
    	return 0;
    }
    donne :
    0
    1
    2
    ...

    La réponse semble oui, et c'est tant mieux, c'est le but d'une variable static : garantir l'unicité de cette variable.
    --
    Jérémie

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    432
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 432
    Par défaut
    jfouche : Pourquoi size_t pour parcourir le tableau ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Car c'est le type le plus approprié : c'est un type correspondant à une taille, ce qui est exactement ce que je veux pour parcourir un tableau. on peut aussi utiliser unsigned (short / int / long) qui représente un entier positif. Utiliser un int est moins bon car il peut être négatif, ce qui ne veux rien dire pour l'index d'un élément dans un tableau.
    En somme : utiliser systématiquement le type dont la sémantique correspond à ce que je souhaite. C'est une bonne habitude à prendre que de donner des interfaces correctes.
    --
    Jérémie

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Février 2006
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 153
    Par défaut
    Pour revenir à la variable locale static : On peut voir ça comme une variable membre static dont la portée est locale à la méthode où elle est déclarée.

    De même qu'une variable membre static peut être vu comme une variable globale dont la visibilité est limitée à la classe où elle est déclarée. Attention, à mes yeux, les variables globales sont à limiter au maximum (entendre :à prohiber sauf cas exceptionnel).

    Est ce plus clair ?
    --
    Jérémie

  6. #6
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Merci beaucoup,
    C'est éffectivement trés clair et vue le comportement à visiblement utiliser avec vraiment beaucoup de procausions si ce n'est le plus rarement possible

Discussions similaires

  1. Réponses: 3
    Dernier message: 26/06/2006, 13h48
  2. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2006, 14h08
  3. [PHP-JS] une variable php dans une fonction javascript
    Par megapacman dans le forum Langage
    Réponses: 3
    Dernier message: 12/06/2006, 14h02
  4. [PHP-JS] Renseigner une variable php dans une fonction JS
    Par gwen-al dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/04/2006, 08h31
  5. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo