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 :
et voila l'affichage correspondant apres execution du programme :
Code : 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 #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; }
Voila si vous pouviez me donner votre avis sur l'exactitude de l'affichage, ce serait sympa.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 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*/
Merci d'avance et bonne soirée
Partager