Bonsoir tout le monde
J'ai un examen de c++ demain et je suis entrain de m'entrainer sur des annales de l'épreuve et je suis tombé sur un exercice où il faut lire le code et deviner ce qu'il affiche.
Hors le code n'affiche pas du tout ce à quoi je m'attendais donc je voudrais avoir la confirmation que l'affichage est correct et que il n'y a pas d'erreur qui viennent du compilateur (j'utilise devcpp-4.9.9.2).
Donc voici le code en question :
Code :
- #include<iostream.h>
- class Base
- {
- public:
- Base(int pipo) {i=8;}
- Base(float pipo) {cout<<12<<" ";}
- ~Base(){cout<<42<<" ";}
- void operator=(int pipo) {i=pipo;}
- virtual int m(){return 11;}
- int i;
- };
- class Derive : public Base
- {
- public :
- Derive():Base(10){}
- Derive(int pipo):Base(1.0f){cout<<19<<" "<<pipo<<" ";}
- ~Derive(){cout<<41<<" ";}
- friend ostream& operator<<(ostream &s, const Derive pipo)
- {s<<20<<" ";}
- int m() {return 13;}
- int n() const{return 31;}
- int n(){return 37;}
- };
- main()
- {
- Base x(1);
- cout<<"a: "<<x.i<<endl;
- Base y=2;
- cout<<"b: "<<y.i<<endl;
-
- Derive z;
- Base &r = z;
-
- cout<<"c: "<<r.m()<<endl;
- cout<<"d: "<<Derive(15)<<endl;
- cout<<"e: "<<z.n()<<endl;
-
- int i;
- cin>>i;
- }
|
et voila l'affichage correspondant apres execution du programme :
Code :
- a: 8
- b: 8 /*ici d'apres le code je m'attendais à ce que ca affiche "b:2" car y.i=2 selon moi*/
- c: 13
- 12 19 15 d: 20 /*ici je m'attendais à "d: 12 19 15 20"*/
- 41 42 e: 37 /*ici je m'attendais à "e:37" je ne sais pas qu'elle est l'instance qui appelle les destructeurs*/
|
Voila si vous pouviez me donner votre avis sur l'exactitude de l'affichage, ce serait sympa.
Merci d'avance et bonne soirée
Message édité par ippat le 12-02-2007 à 02:13:51