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 ;)
Version imprimable
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:
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é. }
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:
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.
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/