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 :

Methodes statiques


Sujet :

C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 114
    Par défaut Methodes statiques
    Bonjour,

    j'ai une question concernant les methodes statiques. Imaginons que j'ai une classe definie de la manière suivante :

    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
     
    // Header : foo.h
    class foo
    {
    public:
    static void initialize (void);
     
    private:
    static bool      _initialized;
    };
     
    // implementation
     
    /* static */ void foo::initialize(void)
    {
     _initialized = true;
    }
    Maintenant dans une autre classe est ce que je peux faire ca (en tout cas c'est ce qui se passe dans du code que j'ai recupéré de quelq'un d'autre) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    extern foo* fooInstance;
    void startmodule()
    {
        // Initialize foo
    	foo::initialize();
     
        // Instanciate our foo
    	fooInstance = new foo();
    }
    Ce que je ne comprends pas c'est le fait de pouvoir appeler foo::initialize() avant meme d'avoir instancier la classe.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    foo::initialize() n'agit sur aucune instance, puisque c'est une fonction statique (parfois appelée "fonction de classe"). Tu peux l'assimiler à une fonction libre, sauf qu'elle est encapsulée dans une classe.

  3. #3
    Membre éprouvé Avatar de Blowih
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 122
    Par défaut
    salut,
    les données et fonction statiques sont utilisable avec la class (MaClasse:: ) et non par avec une instance de cette classe, toute les instance partage les meme données et fonction statique

  4. #4
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Tu ne peux pas utiliser "this" dans une fonction statique si c'est ce qui t'intrigues.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/10/2007, 00h26
  2. probleme accès methode statique
    Par jpsegret dans le forum Langage
    Réponses: 5
    Dernier message: 02/04/2007, 15h40
  3. namespace VS methodes statiques
    Par olive_le_malin dans le forum C++
    Réponses: 5
    Dernier message: 16/03/2007, 14h14
  4. Réponses: 2
    Dernier message: 02/05/2006, 14h34
  5. [Singleton] difference singleton classe avec methodes statiques
    Par matN59 dans le forum Design Patterns
    Réponses: 6
    Dernier message: 15/01/2006, 11h04

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