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![]()
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![]()
Ç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.
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.
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/
Partager