Viabilité des variables locales affectées à d'autres variables

Viabilité des variables locales affectées à d'autres variables - C++ - Programmation

Marsh Posté le 16-03-2008 à 18:17:07    

Bon, le titre pas très clair et je vous prie de m'en excuser. Je suis nouveau en programmation en C++,en particulier pour tout ce qui concerne la programmation objet.

 

Je veux faire la chose suivante, je me demande si c'est sensé :

 


//header
class MaClasse {
int *entier;
MaClasse()}

 

MaClasse::MaClasse() {
int *pointeur;
pointeur = new int[14];
for (i=0;i>14;i++) pointeur[i]=i;
entier = pointeur;
}

 

//main
{
MaClasse MonObjet();
}

 


Donc, ce que je fais, c'est que je construis un tableau dynamique d'entiers à la taille qui me convient dans le constructeur de ma classe, puis j'assigne le pointeur contenu dans l'objet que j'ai créé à la valeur du pointeur ainsi initialisé.

 

Ce que je me demande, c'est si le tableau tout entier reste réservé en mémoire à "MonObjet.entier", ou si en sortant de la fonction où l'on a réservé cet emplacement mémoire à travers la fonction new(), puisque la mémoire était réservée pour "pointeur", elle ne l'est plus pour mon objet... ?


Message édité par hephaestos le 16-03-2008 à 18:17:32
Reply

Marsh Posté le 16-03-2008 à 18:17:07   

Reply

Marsh Posté le 16-03-2008 à 18:22:12    

la mémoire allouée et un pointeur vers cette mémoire sont deux entités distinctes.
 
<métaphore>
Tu achète une maison 8, rue du gland. (new)
Quand les gens veulent t'envoyer une lettre il utilise ton adresse.
Donner plusieurs fois ton adresse ne detruit pas ta maison.
 
Tu déménage en vendant ta maison (delete) pr aller au 112, avenue des n00b (new). Tu doit redonner ton adresse sinon les lettres n'arrive plus.
</métaphore>
 
Ici, entier va recevoir l'adresse contenu dans pointeur. C'est comme si ta mère donne ton adresse à ta tante.  
 
Ensuite, std::vector c mieux et ca t'évitera de te poser ce genre question qui n'ont pas lieu d'être en C++.

Reply

Marsh Posté le 16-03-2008 à 18:26:43    

Merci beaucoup !
 
Je trouve où la doc sur std::vector ?

Reply

Marsh Posté le 16-03-2008 à 18:30:57    

Reply

Marsh Posté le 16-03-2008 à 18:33:52    

Erf. Merci encore, je crois que je vais retourner effacer et réécrire mon programme ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed