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 :

[debutant] instanciation de variable


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 25
    Par défaut [debutant] instanciation de variable
    Bonjour,
    Je suis en train de découvrir la programmation objet et je souhaiterai savoir la synthaxe pour instancier une variable.
    Je vous remercie d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ça dépend de la façon de l'instancier.

    Dans des langages comme Java, il n'y en a qu'une seule: L'allocation dynamique.
    En C++, ce n'est pas le cas.

    Une variable peut être locale à une fonction, l'instanciation est alors tout simple:
    Code C++ : 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
    void UneFonction(void)
    {
    	//Instancie la variable sur la pile 
    	//avec le constructeur par défaut de la classe UneClasse.
    	UneClasse unObj; 
     
    	//Instancie la variable sur la pile 
    	//un constructeur partticulier de la classe UneClasse.
    	//(un constructeur qui prend un int en paramètre, par exemple)
    	UneClasse unAutreObj(42);
     
    	unObj.uneFonctionMembre();
     
    	//Les objets sur la pile sont automatiquement détruits en fin de bloc.
    	//Le destructeur de leur classe est automatiquement appelé.
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ou bien, on peut utiliser l'allocation dynamique.
    Attention, contrairement aux langages comme Java ou ceux de la plate-forme .Net, il faut explicitement détruire l'objet quand on n'en a plus besoin.

    Code C++ : 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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    //Cette version-là retourne un pointeur.
    UneClasse * UneAutreFonction(void)
    {
    	//Déclare un bète pointeur. 
    	//Attention, il ne pointe sur rien.
    	//On lui donne une valeur qu'on sait invalide et testable:
    	//C'est pour l'instant un pointeur nul.
    	UneClasse * pObj = 0;
     
    	//Instancie l'objet sur le tas.
    	//L'adresse de l'objet est stockée dans pObj.
    	pObj = new UneClasse;
     
    	//Instancie l'objet sur le tas.
    	UneClasse * pAutreObj = new UneClasse(42);
     
    	pObj->uneFonctionMembre();
     
    	//Quand on n'a plus besoin de l'objet, il faut le détruire explicitement.
    	//Ici, on va détruire le premier, mais pas le second, 
    	//dont on va retourner le pointeur.
    	delete pObj;
    	//On remet le pointeur à zéro 
    	//puisque l'adresse où il pointe est désormais invalide.
    	pObj = 0;
     
    	//Ici, on ne fait pas de delete sur le second pointeur: 
    	//On a choisi de le retourner à la place.
    	return pAutreObj;
    }
     
    void EncoreUneAutreFonction(void)
    {
    	//On appelle la fonction qui retourne un pointeur.
    	//Il faut donc mémoriser le pointeur retourné.
    	UneClasse * pMonObj = UneAutreFonction();
     
    	pMonObj->UneFonctionMembre();
     
    	//Ici, on n'en a plus besoin, donc on détruit l'objet
    	delete pMonObj;
    	pMonObj = 0;
    }

    Et pour les tableaux d'objets, c'est pareil: L'allocation peut être sur la pile ou dans le tas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre chevronné
    Profil pro
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 284
    Par défaut
    Commence par jeter un petit coup d'oeil sur les tutoriaux, ils sont assez complets et devraient te donner de bonnes bases en programmation (orienté objet ou non).

    http://cpp.developpez.com/cours/

Discussions similaires

  1. [DEBUTANT] Transformer une variable Double en STring
    Par Battosaiii dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2005, 16h43
  2. Réponses: 2
    Dernier message: 19/04/2005, 11h27
  3. [debutant] procédure et variables
    Par rohlio dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/07/2004, 18h33
  4. Réponses: 12
    Dernier message: 23/06/2004, 13h50
  5. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 21h53

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