évènement non prévu dans un petit programme
Bonjour,
je suis débutant en C++. Voici le programme que j'ai écrit :
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 44 45
| *******************************************
*******************************************
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
/****************** class chaine ****************
*************************************************/
class chaine
{
public:
chaine(const char* _val);
void affiche();
int longueur;
char* val;
};
chaine::chaine(const char* _val)
{
longueur=strlen(_val);
cout<<"ca passe"<<endl;
cout<<" _val="<<_val<<" longueur="<<longueur<<endl;
char* val=new char[longueur+1];
strcpy(val,_val);
cout<<" val="<<val<<endl;
}
void chaine::affiche()
{
cout<<"chaine val="<<val<<endl;
}
int main(int argc, char *argv[])
{
chaine chn1("test1");
cout<<"chn1.longueur="<<chn1.longueur<<endl;
cout<<"chn1.val="<<chn1.val<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}[/COLOR]************************************************ |
J'ai 2 choses non prévu :
premièrement, lorsque je construit une chaine chn1 avec "test1" comme argument, le constructeur fonctionne correctement (j'ai vérifié) : le membre val (pointeur de caractère) est bien initialisé par "test1". Mais lorsque je vérifie après sa valeur (chn1.val) dans le programme principal il ne m'affiche plus rien. val s'est vidé. Je ne comprend pas.
Deuxièmement à la fin du programme, j'ai une fenêtre d'erreur qui s'affiche avec le message : programme2.exe a rencontré un problème et doit fermer. je ne comprend pas où il y a un deuxième BUG.
Qui pourrait répondre à mes 2 questions ? Merci d'avance.